![]() |
Tipp 0222
|
Ende eines Prozesses abwarten
|
 |
|
Autor/Einsender: Datum: |
|
Detlev Schubert 09.04.2002 |
|
Entwicklungsumgebung: |
|
VB 6 |
|
|
Für die Koordination zwischen Programm und einer per Shell gestarteten Anwendung ist es oft notwendig, das Ende der Anwendung abzuwarten. Wurde wie in unserem Tipp z.B. MineSweeper per Shell-Befehl gestartet, dann läuft das VB-Programm munter weiter, da Windows ein Multitasking-Betriebssystem ist.
|
Da dieses Verhalten jedoch nicht immer erwünscht ist, vor allem dann nicht, wenn das VB-Programm Ergebnisse oder Daten der gestarteten Anwendung verarbeiten soll, muss man also eine Methode entwickeln, die das Ende eines laufenden Windows-Prozesses erkennt. Dabei erweist sich die API-Funktion
FindWindow als äußerst nützlich.
|
Ist der Klassenname des Programms oder auch sein Fenstertiteltext bekannt, dann kann das VB-Programm mit
FindWindow in einer Endlosschleife laufen, die erst verlassen wird, wenn die entsprechende Anwendung beendet wurde.
|
|
|
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As Any, ByVal _
lpWindowName As Any) As Long
Private Sub Command1_Click()
If FindWindow("Minesweeper", 0&) Then
MsgBox "Upps sorry," & vbCrLf & "aber Minesweeper ist " & _
"doch schon gestartet!", vbExclamation + vbOKOnly
Exit Sub
End If
Shell Pathname:="winmine.exe", Windowstyle:=vbNormalFocus
While FindWindow("Minesweeper", 0&)
DoEvents
Wend
MsgBox "Minesweeper wurde beendet.", vbInformation + vbOKOnly
End Sub
|
|
|
|
|
Windows-Version |
95 |
 |
|
98/SE |
 |
|
ME |
 |
|
NT |
 |
|
2000 |
 |
|
XP |
 |
|
Vista |
 |
|
Win
7 |
 |
|
|
VB-Version |
VBA 5 |
 |
|
VBA 6 |
 |
|
VB 4/16 |
 |
|
VB 4/32 |
 |
|
VB 5 |
 |
|
VB 6 |
 |
|
|
|
Download (2,3 kB)
|
Downloads bisher: [ 1443 ]
|
|
|