利用Process类遍历当前所有进程,利用MainWindowTitle属性来获取指定窗口标题的进程ID,创建一个线程池或者线程,来循环检测这个ID的进程是否已退出,在循环线程中设置Thread.Sleep(50)中断来减少系统开销,这个方法仅适用于主窗口,也就是窗体关闭,程序就退出了,如果针对的是子窗口,就用第二种方法。
利用系统API,循环遍历所有窗口,当指定标题不存在时就是已经退出了。
Private Declare Auto Function FindWindow Lib "user32" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Integer
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim hWnd As Integer
do
hWnd = FindWindow(vbNullString, "窗体名")
My.Application.DoEvents()
loop until hwnd=0
msgbox "窗口已关闭"
End Sub