Zurück zur Homepage

Programm starten und warten

Manchmal ist es notwendig, zu warten, bis ein über Shell gestartetes Programm beendet ist, weil vielleicht erst dann die zu Importierenden Daten vorhanden sind.

Beispieldatei (startandwait.zip 11 kB)

Private Const PROCESS_QUERY_INFORMATION = &H400

Private Const STILL_ACTIVE = &H103

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 Declare Function OpenProcess Lib "kernel32" _
  (ByVal dwDesiredAccess As Long, _
  ByVal bInheritHandle As Long, _
  ByVal dwProcessId As Long) As Long

 

Public Sub StartenUndWarten(Programmname As String)
  Dim hwndShell As Long, hwndProzess As Long
  Dim lngLäuft As Long
  hwndShell = Shell(Programmname, 1)
  hwndProzess = OpenProcess(PROCESS_QUERY_INFORMATION, _
    0&, hwndShell)
  Do
    GetExitCodeProcess hwndProzess, lngLäuft
    'ev.
    Sleep 100
  Loop While lngLäuft = STILL_ACTIVE
End Sub