VB-Homepage Tipp 038

Programmfortsetzung erst nach Anwendungsende

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


Tipp-Download

Quelle :

Zurück zur Übersichtsseite