アクティブなプロセスが終了するのを待つ方法を理解するために、次のコードを使用しています。
私のコードでは、メモ帳が開いたときに MessageBox が表示されます。
フォームが応答しなくなることなく、メモ帳が閉じられるまで待つにはどうすればよいですか?
Public Class Form1
Private Const WAIT_INFINITE = -1&
Private Const SYNCHRONIZE = &H100000
Private Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long,
ByVal bInheritHandle As Long,
ByVal dwProcessId As Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" _
(ByVal hHandle As Long,
ByVal dwMilliseconds As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim hProcess As Long
Dim taskId As Long
Dim cmdline As String
cmdline = "notepad.exe"
taskId = Shell(cmdline, vbNormalFocus)
hProcess = OpenProcess(SYNCHRONIZE, True, taskId)
Call WaitForSingleObject(hProcess, WAIT_INFINITE)
CloseHandle(hProcess)
MsgBox ("The shelled app has ended.")
End Sub
End Class