C++ TerminateProcess函数

jem*_*per 10 c++ windows termination process

我一直在搜索Win32 API C++函数TerminateProcess()的示例,但找不到任何.

我一般不熟悉Win32 API,所以我想问一下这里比我更好的人能给我看一个例子,

  • 通过终止它所需的PID检索进程句柄,然后用它调用TerminateProcess.

如果你不熟悉C++,那么C#等价物也会有所帮助.

Don*_*eba 18

要回答原始问题,要通过其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;
}
Run Code Online (Sandbox Code Playgroud)

请记住,TerminateProcess不允许其目标在有效状态下清理和退出.使用前请三思而后行.

  • 请注意,这会立即返回。虽然正在死亡的进程可能仍会持有一些锁一段时间。您可能需要使用“GetExitCodeProcess”添加一个循环,以确保进程已经终止。 (2认同)