VB6他のプログラムを強制終了する

スポンサーリンク

VB6 では、Win32API の TerminateProcess 関数を使用します。

サンプルコード

以下にサンプルコードを示します。

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

' TerminateProcess 関数
Private Declare Function TerminateProcess Lib "KERNEL32.DLL" ( _
    ByVal hProcess  As Long, _
    ByVal uExitCode As Long  _
) As Long

' 定数の定義
Private Const SYNCHRONIZE       As Long = &H100000
Private Const PROCESS_TERMINATE As Long = &H1
VB6.0 以前
    ' メモ帳を起動して、プロセス ID を取得する
    Dim lProcessId As Long
    lProcessId = CLng(Shell("Notepad", vbNormalFocus))

    ' プロセスのハンドルを取得する
    Dim hProcessHandle As Long
    hProcessHandle = OpenProcess(SYNCHRONIZE Or PROCESS_TERMINATE, 0&, lProcessId)

    ' 制御を止めるために、メッセージ ボックスを表示する
    Call MsgBox("メモ帳を終了します")

    ' メモ帳を強制終了する
    Call TerminateProcess(hProcessHandle, 0&)

    ' プロセスのハンドルを閉じる
    Call CloseHandle(hProcessHandle)

関連するリファレンス

準備中です。

スポンサーリンク