Sie möchten beispielweise mit dem <Shell> Befehl
mehrere Programme nacheinander ausführen, dabei wollen Sie aber, daß das nächste
Programm immer erst ausgeführt wird, wenn das vorhergehende beendet ist.
Genau dies tut folgender Quellcode.
Als Beispiel wird hier WINFILE, also der Dateimanager gestartet, und wenn Sie diesem
nachfolgend beenden, wird dies vom Beispielprogramm angezeigt.
Genau wie es hier nur die Anzeige ist, daß das Programm beendet wurde, könnte nun Ihr
zweiter Programmaufruf ausgeführt werden.
Allgemein/Deklarationen
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As
Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As
Long, lpExitCode As Long) As Long Const
STILL_ACTIVE = &H103
'Der Aufruf erfolgt hier über einen Command-Button und die Anzeige über ein Label
'Objekt.beides müßten Sie in Ihre Form noch hinzufügen.
Private Sub Command1_Click()
Dim AppDir As String
Dim Progname As String, Dateiname As String
Dim ProcessId As Long, hProcess As Long, nRet As Long
Const fdwAccess = &H100000
ProcessId = Shell("winfile",
vbMinimizedNoFocus) 'minimiert
hProcess = OpenProcess(fdwAcess, False, ProcessId)
Do
GetExitCodeProcess hProcess, nRet
DoEvents
Loop While nRet = STILL_ACTIVE
Label1.Caption = "Programmende, nächsten Befehl abarbeiten"
End Sub |