1)我使用ShellExecuteEx启动了一个进程。
2)使用以下代码检索PID:
GetProcessId(shellExInfo.hProcess)
示例代码:
SHELLEXECUTEINFO shellExInfo;
shellExInfo.cbSize = sizeof(SHELLEXECUTEINFO);
shellExInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
shellExInfo.hwnd = NULL;
shellExInfo.lpVerb = "open";
shellExInfo.lpFile = processToStart.c_str();
shellExInfo.lpParameters = processParams.c_str();
shellExInfo.lpDirectory = NULL;
shellExInfo.nShow = SW_SHOW;
shellExInfo.hInstApp = NULL;
ShellExecuteEx(&shellExInfo); // start process
GetProcessId(shellExInfo.hProcess); // retrieve PID
现在我想要杀死指定PID的进程!这该怎么做?
谢谢
CreateProcess()
而不是ShellExecute/Ex()
来运行可执行文件。不仅它是首选的 API,而且它还返回进程 ID 和进程句柄,因此您不必手动调用GetProcessId()
。 - Remy LebeauCreateProcessElevated()
API(以及其他 API),它利用了ShellExecute()
内部使用的相同提升 API。 - Remy Lebeau