権限の強いアプリのプロセスは終了できないけど、電卓やメモ帳であれば終了できる。
プロセスIDはタスクマネージャの[プロセス]を見れば分かる。 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 |