Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
gnozal
Messages : 832 Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :
Message
par gnozal » sam. 05/nov./2005 9:39
Personnellement, je n'utilise pas RunProgram().
Je fais comme çà :
Code : Tout sélectionner
StartupInfo.STARTUPINFO
StartupInfo\cb = SizeOf(STARTUPINFO)
StartupInfo\dwFlags = #STARTF_USESHOWWINDOW
StartupInfo\wShowWindow = #SW_HIDE
ProcessInfo.PROCESS_INFORMATION
If CreateProcess_(0, @CommandLine.s, 0, 0, 0, 0, 0, 0, @StartupInfo, @ProcessInfo) = 0
; Impossible de lancer CommandLine
Else
ProcessExitCode.l
Repeat
DoEvents() ; ne pas figer l'application pendant l'appel au programme externe
GetExitCodeProcess_(ProcessInfo\hProcess, @ProcessExitCode)
Until ProcessExitCode <> #STILL_ACTIVE
If ProcessExitCode > 0
Select ProcessExitCode
; gestion de l'exit code
EndSelect
EndIf
EndIf
Backup
Messages : 14526 Inscription : lun. 26/avr./2004 0:40
Message
par Backup » sam. 05/nov./2005 10:08
DoEvents()
heu c'est du Visual Basic ça !
ou bien une lib laquelle ?
Chris
Messages : 3731 Inscription : sam. 24/janv./2004 14:54
Contact :
Message
par Chris » sam. 05/nov./2005 10:17
gnozal a écrit : Personnellement, je n'utilise pas RunProgram().
Je fais comme çà :
Code : Tout sélectionner
StartupInfo.STARTUPINFO
StartupInfo\cb = SizeOf(STARTUPINFO)
StartupInfo\dwFlags = #STARTF_USESHOWWINDOW
StartupInfo\wShowWindow = #SW_HIDE
ProcessInfo.PROCESS_INFORMATION
If CreateProcess_(0, @CommandLine.s, 0, 0, 0, 0, 0, 0, @StartupInfo, @ProcessInfo) = 0
; Impossible de lancer CommandLine
Else
ProcessExitCode.l
Repeat
DoEvents() ; ne pas figer l'application pendant l'appel au programme externe
GetExitCodeProcess_(ProcessInfo\hProcess, @ProcessExitCode)
Until ProcessExitCode <> #STILL_ACTIVE
If ProcessExitCode > 0
Select ProcessExitCode
; gestion de l'exit code
EndSelect
EndIf
EndIf
Je ne vois pas vraiment ce que ça apporte d'aller réinventer des commandes qui existent déjà.
Mais après tout, chacun fait comme il veut...
gnozal
Messages : 832 Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :
Message
par gnozal » sam. 05/nov./2005 10:24
Dobro a écrit : DoEvents()
heu c'est du Visual Basic ça !
ou bien une lib laquelle ?
J'ai repris le nom VB car il résume bien la fonction.
On peut utiliser :
Code : Tout sélectionner
Procedure DoEvents()
msg.MSG
If PeekMessage_(msg,0,0,0,1)
TranslateMessage_(msg)
DispatchMessage_(msg)
Else
Delay(1)
EndIf
EndProcedure
ou
Chris a écrit : Je ne vois pas vraiment ce que ça apporte d'aller réinventer des commandes qui existent déjà.
L'intérêt c'est que l'application n'est pas totalement figée (raffraîchissement des fenêtres etc...) en attendant la fin du programme appelé, ce qui est le cas avec RunProgram() qui en plus ne renvoie pas d'exit code.
Chris
Messages : 3731 Inscription : sam. 24/janv./2004 14:54
Contact :
Message
par Chris » sam. 05/nov./2005 10:47
Gnozal a écrit : L'intérêt c'est que l'application n'est pas totalement figée (raffraîchissement des fenêtres etc...) en attendant la fin du programme appelé, ce qui est le cas avec RunProgram() qui en plus ne renvoie pas d'exit code.
Je n'avais jamais remarqué que l'application était "figée", sauf avec 1 ou 2 comme dernier paramètre.
Mais si tu le dis, c'est sûrement que tu l'as constaté.
gnozal
Messages : 832 Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :
Message
par gnozal » sam. 05/nov./2005 10:57
Chris a écrit : Je n'avais jamais remarqué que l'application était "figée", sauf avec 1 ou 2 comme dernier paramètre.
Bien entendu avec le paramètre 1 : le programme ne répond plus avant que l'application appelée soit terminée.
Flype
Messages : 2431 Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes
Message
par Flype » dim. 06/nov./2005 11:58
DoEvents() est présent dans la compil PBOSL.