プログラムが終了したかどうかを判断する
スポンサーリンク
VB6 では、Win32API の GetExitCodeProcess 関数を使用します。
サンプルコード
以下にサンプルコードを示します。
VB6.0 以前
Option Explicit ' OpenProcess 関数 Private Declare Function OpenProcess Lib "KERNEL32.DLL" ( _ ByVal dwDesiredAccess As Long, _ ByVal bInheritHandle As Long, _ ByVal dwProcessId As Long _ ) As Long ' CloseHandle 関数 Private Declare Function CloseHandle Lib "KERNEL32.DLL" ( _ ByVal hObject As Long _ ) As Long ' GetExitCodeProcess 関数 Private Declare Function GetExitCodeProcess Lib "KERNEL32.DLL" ( _ ByVal hProcess As Long, _ ByRef lpExitCode As Long _ ) As Long ' 定数の定義 Private Const PROCESS_QUERY_INFORMATION As Long = &H400 Private Const STILL_EXIT As Long = &H103
VB6.0 以前
' メモ帳を起動して、プロセス ID を取得する Dim lProcessId As Long lProcessId = CLng(Shell("Notepad", vbNormalFocus)) ' プロセスのハンドルを取得する Dim hProcessHandle As Long hProcessHandle = OpenProcess(PROCESS_QUERY_INFORMATION, 0&, lProcessId) ' 制御を止めるために、メッセージ ボックスを表示する Call MsgBox("このメッセージ ボックスが表示されてる間に終了してください") ' 終了したかどうかを示す値を取得する Dim lExitCode As Long Call GetExitCodeProcess(hProcessHandle, lExitCode) ' 起動したプログラムが終了したかどうかを判断する If lExitCode <> STILL_EXIT Then Call MsgBox("メモ帳は終了しています") Else Call MsgBox("メモ帳は終了していません") End If ' プロセスのハンドルを閉じる Call CloseHandle(hProcessHandle)
関連するリファレンス
準備中です。