End MonCodeDeRetour ; comment çà marche ?

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 »

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 »

DoEvents()
heu c'est du Visual Basic ça !

ou bien une lib laquelle ? 8O :lol:
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

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 »

Dobro a écrit :
DoEvents()
heu c'est du Visual Basic ça !

ou bien une lib laquelle ? 8O :lol:
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

Code : Tout sélectionner

Procedure DoEvents() 
  While WindowEvent(): Wend 
EndProcedure
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.
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

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 »

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.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

DoEvents() est présent dans la compil PBOSL.
Image
Répondre