● 動作中のプロセスを終了する ●

権限の強いアプリのプロセスは終了できないけど、電卓やメモ帳であれば終了できる。

プロセスIDはタスクマネージャの[プロセス]を見れば分かる。
プロセスIDが表示されていない場合は、タスクマネージャのメニュー[表示(V)] - [列の選択(S)...]より表示させるべし。

Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Const SYNCHRONIZE = &H100000
Private Const PROCESS_TERMINATE As Long = &H1

'-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
' 機  能:プロセスを終了する
' 引  数:(i)ProcID … プロセスID
' 返り値:正常:0以外  異常:0
'=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Public Function KillProcess(ByVal ProcID As Long) As Long
    'プロセスのハンドル
    Dim hProcess As Long

    'プロセスを開く
    hProcess = OpenProcess(PROCESS_TERMINATE, False, ProcID)
    'hProcess = OpenProcess(SYNCHRONIZE, False, ProcID)  'Windows NT/2000用
    If hProcess Then
        'プロセスを切る
        KillProcess = TerminateProcess(hProcess, 0&)
        'プロセスIDのハンドルを閉じる
        Call CloseHandle(hProcess)
    End If
End Function

戻る