Bonjour,
Par exemple je fais Net Send * Bonjourr.
Comment je peux savoir ce qu'a retourné mon net send tout en le faisant en runprogram() avec les options 1|2 ?
Savoir ce que retourne un programme MS-DOS
ça marche pas...
Voici juste le code du RunProgram().
Voici juste le code du RunProgram().
Code : Tout sélectionner
RunProgram("net", "send " + user$ + Chr(32) + Chr(34) + msg$ + Chr(34) + ">" + TmpFile$, "", 1 | 2)
Bonjour à tous
Tu peux peut être tirer quelque chose de ce qui suit :
Tu peux peut être tirer quelque chose de ce qui suit :
Code : Tout sélectionner
User.s="Toto"
Msg.s="Message"
TmpFile.s="c:\rep.txt"
OpenFile(1,"c:\net.bat")
Send.s=" Net send "+User.s+" "+Msg.s+" >"+TmpFile.s
WriteStringN(Send)
CloseFile(1)
RunProgram("net.bat","","", 1 | 2)
OpenFile(1,TmpFile)
Answer.s=ReadString()
CloseFile(1)
MessageRequester("Réponse ", Answer)
Denis
Bonne Jounée à tous
Bonne Jounée à tous
J'ai voulu éviter le batch, alors je suis passé par le DOS.
La procedure Env().
On récupère %comspec% comme ça on interprête sur le champ et on évite les batch qui ne s'effacent pas après.
Merci pour votre aide.
Code : Tout sélectionner
temp$=Space(255)
GetTempPath_(#Max_Path,@temp$)
TmpFile$=Space(#Max_Path)
GetTempFileName_(temp$,"NSGGPZ93",0,@TmpFile$)
Cmd$=Env("%comspec%")
RunProgram(cmd$, "/c net send " + user$ + Chr(32) + Chr(34) + msg$ + Chr(34) + ">" + TmpFile$, "", 1 | 2)
If ReadFile(0,TmpFile$)
Len=Lof()
*buffer=AllocateMemory(Len)
If ReadData(*Buffer,Len)
NetMsg$=PeekS(*buffer)
NetMsg$=ReplaceString(NetMsg$,Chr(130),"é",1,1)
NetMsg$=ReplaceString(NetMsg$,Chr(133),"à",1,1)
Else
NetMsg$="Le fichier "+TmpFile$+" n'a pu être lu. Il est impossible de savoir si le message a bien été envoyé."
EndIf
MessageRequester("Net Sand - Résultat", NetMsg$+#LFCR$+"Le message était :"+#LFCR$+#DQUOTE$+MSG$+#DQUOTE$, #MB_OK | #MB_IconAsterisk)
CloseFile(0)
FreeMemory(*buffer)
While DeleteFile(TmpFile$)=0:Delay(20):Wend
Else
MessageRequester("Erreur","Le fichier pour le résultat ("+TmpFile$+") n'a pas été créé. Il n'est donc pas possible de certifier que le message a bien été envoyé.",#MB_OK|#MB_IconStop)
EndIf
Code : Tout sélectionner
ProcedureDLL.s Env( EnvName$ ) ; Get an environment variable value.
Result.s = ""
Size.l = ExpandEnvironmentStrings_( EnvName$, #Null, #Null)
If Size
Result = Space(Size)
ExpandEnvironmentStrings_( EnvName$, Result, Size)
EndIf
ProcedureReturn Result
EndProcedure
Merci pour votre aide.