VB6プログラムが終了したかどうかを判断する

スポンサーリンク

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)

関連するリファレンス

準備中です。

スポンサーリンク