使用WaitForSingleObject此处而不是不使用它有什么好处?第一个代码块来自之前的答案.第二个块是我如何做到这一点.
BOOL IsProcessRunning(DWORD pid)
{
    HANDLE process = OpenProcess(SYNCHRONIZE, FALSE, pid);
    DWORD ret = WaitForSingleObject(process, 0);
    CloseHandle(process);
    return (ret == WAIT_TIMEOUT);
}
VS
BOOL IsProcessRunning(DWORD pid)
{
   HANDLE process = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, pid);
   const bool exists = (process != NULL);
   CloseHandle(process);
   return exists;
}
似乎使用SYNCHRONIZE需要更高的权限,我只想检查当前用户的PID.
当一个进程完成时,它会停止运行,但在它的最后一个句柄关闭之前它不会消失.第一个解决方案区分这两种状态(仍在运行或已完成运行).当然,答案可能在它返回时已经过时.
如果你不需要这种区别,那么你的方法很好(虽然我会将函数命名为DoesProcessExist).