13

Win32 API C ++関数TerminateProcess()の例を検索してきましたが、見つかりませんでした。

私は一般的にWin32APIに精通していないので、ここで私よりも優れている誰かが私に例を示すことができるかどうか尋ねたいと思いました。

  • プロセスハンドルを終了するために必要なPIDでプロセスハンドルを取得し、それを使用してTerminateProcessを呼び出します。

C ++に慣れていない場合は、C#に相当するものも役立ちます。

4

1 に答える 1

23

元の質問に答えるには、PID でプロセス ハンドルを取得して TerminateProcess を呼び出すには、次のようなコードが必要です。

BOOL TerminateProcessEx(DWORD dwProcessId, UINT uExitCode)
{
    DWORD dwDesiredAccess = PROCESS_TERMINATE;
    BOOL  bInheritHandle  = FALSE;
    HANDLE hProcess = OpenProcess(dwDesiredAccess, bInheritHandle, dwProcessId);
    if (hProcess == NULL)
        return FALSE;

    BOOL result = TerminateProcess(hProcess, uExitCode);

    CloseHandle(hProcess);

    return result;
}

TerminateProcess は、ターゲットがクリーンアップして有効な状態で終了することを許可しないことに注意してください。使用する前によく考えてください。

于 2010-03-15T04:13:13.413 に答える