1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
Public Sub AttendreFinProcess(proc As PROCESS_INFORMATION, Optional timeout As Long = 60)
Dim Ret As Long
Dim tms As Single
Dim exitcode As Long
'Attendre la fin de la commande
tms = Timer
Ret = GetExitCodeProcess(proc.hProcess, exitcode)
Do While Ret <> 0 And exitcode = STILL_ACTIVE
Ret = GetExitCodeProcess(proc.hProcess, exitcode)
DoEvents
Sleep 100
If Timer - tms > timeout Then
Err.Raise STILL_ACTIVE, "AttendreFinProcess", "Timeout sur l'attente de la fin d'un process"
End If
Loop
If Ret = 0 Then
Err.Raise Err.LastDllError, "AttendreFinProcess", "Erreur systeme N° " & Err.LastDllError
End If
End Sub
Public Sub LancerProcess(sExe As String, proc As PROCESS_INFORMATION, ByVal StartSize As enSW)
Dim start As STARTUPINFO
Dim Ret As Long
'StartupInfo pour le processus qui lancera la commande
start.cb = Len(start)
start.dwFlags = &H1 'l'exe tourne en tâche de fond
start.wShowWindow = StartSize
'Lancement de la commande
Ret& = CreateProcess(0&, sExe, 0&, 0&, 0&, NORMAL_PRIORITY_CLASS, 0&, 0, start, proc)
If Ret = 0 Then
Err.Raise Err.LastDllError, "LancerProcess", "Erreur systeme N° " & Err.LastDllError
End If
End Sub |
Partager