Beendigung eines Shell-Aufrufes
11.11.2004 11:51:15
Talcom
um das Ende eines Shell-Aufrufes abwarten zu können, habe ich mir folgendes Coding gestrickt. Die Infos habe ich aus anderen Beiträgen hier im Forum.
Wenn nun eine *.bat Datei damit gestartet wird, bekomme ich als RC ein -1
geliefert, wenn die Batchdatei beendet worden ist. Einen RC -1 erhalte ich
allerdings auch dann, wenn ich in die *.bat eine Pause einfüge und so die
Datei noch nicht abgearbeitet worden ist.
Welchen Wert des RC muss ich abfragen, damit ich sicher sein kann, das die
Datei abgearbeitet worden ist? Bzw, wie muss ich meine Abfrage ändern, damit
dies so klappt.
Es ist wichtig zu wissen, wann die *.bat abgearbeitet worden ist, denn im
späteren Ablauf des Makros greife ich auf Ergebnisse dieser *.bat zu.
Über einen Hinweis würde ich mich freuen.
Gruß Talcom
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 ShellWait(Programm As String)
Dim ProcessID As Long
Dim RC As Long
Dim Process As Long
Const PQI = &H400 ' ProcessQueryInformation
Const Timeout = &H102& ' Wert für einen Timeout
ProcessID = Shell(Programm, vbNormalFocus)
Process = OpenProcess(PQI, False, ProcessID)
Do
RC = WaitForSingleObject(Process, 200)
Loop Until RC <> Timeout
End Sub