ich möchte eine *.bat aufrufen deren fertigstellung abwarten.
Folgenden code habe ich im archiv gefunden:
Public Const PROCESS_QUERY_INFORMATION = &H400
Public Const WAIT_TIMEOUT = &H102&
Declare
Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Declare
Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, _
ByVal dwMilliseconds As Long) As Long
Sub DOSShell()
WartenBisFertig ("C:\Programme\Dyn\bin\test.bat")
MsgBox "FERTIG"
End Sub
Sub WartenBisFertig(strEXE As String)
Dim ProcessID As Long
Dim hProcess As Long
Dim RetVal As Long
ProcessID = Shell(strEXE, vbHide)
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, ProcessID)
Do
DoEvents
RetVal = WaitForSingleObject(hProcess, 50)
Loop Until RetVal WAIT_TIMEOUT
End Sub
Mein Problem ist, dass die test.bat startet, aber die MSGBOX sofort erscheint.
Anscheinend wird auch nicht die cmd.exe überwacht, welche die test.bat abarbeitet.
Irgendwie bekomme ich das nicht zum laufen.
Könnt Ihr mir auf die Sprünge helfen?
Viele Grüße, Ralf