Le but de la manip consite à attendre la fin de l'exécution d'un programme DOS
avant de continuer le déroulement de votre programme VB
Source / Exemple :
Option Explicit
Private Const PROCESS_QUERY_INFORMATION = &H400
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Function ExecuterCommandeDOS(commandeDOS As String) As Boolean
Dim codeRetour As Double 'Code retour de la commande Shell
Dim flFin As Long
ExecuterCommandeDOS = False
On Error GoTo Fin
codeRetour = Shell(commandeDOS, vbNormalFocus)
If codeRetour > 0 Then
'Boucle d'attente de la fin d'exécution
Do
flFin = OpenProcess(PROCESS_QUERY_INFORMATION, False, codeRetour)
' Attente 200 millisecondes afin de ne pas consommer tout le temps CPU
Sleep (200)
DoEvents
Loop While flFin <> 0
ExecuterCommandeDOS = True
End If
Fin:
End Function
Private Sub Command1_Click()
Dim flExecutionOK As Boolean
Dim commandeDOS As String
commandeDOS = "calc"
flExecutionOK = ExecuterCommandeDOS(commandeDOS)
If flExecutionOK = True Then
MsgBox "L'exécution de la commande " & commandeDOS & " est terminée avec succès"
Else
MsgBox "L'exécution de la commande " & commandeDOS & " a échouée"
End If
End Sub
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.