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
 
Weitere Links zum Thema
Fenster-Handle ermitteln (ohne exakten Titel)
Fenster-Handle, -Titel und -Klassennamen ermitteln
Childfenster von Fremdanwendungen überwachen

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: [ 1450 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Dienstag, 27. September 2011