Execution de commande et attente de fin

Soyez le premier à donner votre avis sur cette source.

Snippet vu 36 755 fois - Téléchargée 38 fois

Contenu du snippet

Le code ci-dessous permet d'executer un programme externe, un peu comme la fonction Shell(), mais la, le programme VB ne reprend la main que lorsque le programme externe lancé est fini ...
Placez ce code dans un module standard et utilisez la procédure ShellWait "..." depuis votre code.
Exemple : ShellWait "cmd.exe /c dir c:\*.*>c:\DirC.txt"

Source / Exemple :


Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Const STILL_ACTIVE = &H103
Private Const PROCESS_QUERY_INFORMATION = &H400

Public Sub ShellWait(ByVal JobToDo As String)
Dim hProcess As Long, RetVal As Long
    
    hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(JobToDo, vbMinimizedNoFocus))
    Do
        GetExitCodeProcess hProcess, RetVal
        DoEvents
        Sleep 100
    Loop While RetVal = STILL_ACTIVE
End Sub

A voir également

Ajouter un commentaire Commentaires
Rrominet Messages postés 133 Date d'inscription lundi 26 janvier 2009 Statut Membre Dernière intervention 24 novembre 2014
17 sept. 2003 à 20:28
Ca peut pas être mal
Seul ennui, ça utilise une commande DOS, et surtout le CMD de 2k ou XP, donc sous Win95/98 (et NT ?) ça ne fonctionne pas...

Mais c'est simple d'utilisation, c'est l'avantage !!
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
17 sept. 2003 à 23:05
Pour Rrominet
Sous Win9x, il suffit de remplacer
cmd.exe par command.com
et ça marche !
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
17 sept. 2003 à 23:44
Euhhh !! Vous avez pas tout compris la !! Ca ne sert pas qu'à lancer des commandes DOS !! Vous pouvez faire ShellWait "Winword.exe" si vous voulez, et le code ne reprendra qu'après la fermeture de Word !!
Alors excusez-moi si dans l'exemple je parlais de CMD.EXE mais je suis XP depuis un moment (et même NT 4.0 et même 3.51, avant) alors j'ai perdu le réflexe du "command.com" depuis !!!
Rrominet Messages postés 133 Date d'inscription lundi 26 janvier 2009 Statut Membre Dernière intervention 24 novembre 2014
17 sept. 2003 à 23:57
Ha ouais command.com... ;-)
cs_AbriBus Messages postés 492 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 25 avril 2007 5
18 sept. 2003 à 09:34
crenaud> impec. Rien à dire, bonne utilisation des API, simple, efficace... NIKEL
Bon ben ca fera 12/10 ;-}

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.