Visual c++ 无法关闭进程

Visual c++ 无法关闭进程,visual-c++,Visual C++,我无法关闭进程nb.exe。我需要关闭此进程,但它不会关闭。在关闭期间,我还需要确保卸载与此进程相关的所有dll。下面是我的代码 bool进程退出(无效) { PROCESSENTRY32条目; entry.dwSize=sizeof(PROCESSENTRY32) HANDLE hProcess=OpenProcess(PROCESS\u ALL\u ACCESS,FALSE,entry.th32ProcessID) } 如果您有任何意见,请告诉我。我想您搞错了。您没有对运行nb.exe的进程

我无法关闭进程nb.exe。我需要关闭此进程,但它不会关闭。在关闭期间,我还需要确保卸载与此进程相关的所有dll。下面是我的代码

bool进程退出(无效) { PROCESSENTRY32条目; entry.dwSize=sizeof(PROCESSENTRY32)

HANDLE hProcess=OpenProcess(PROCESS\u ALL\u ACCESS,FALSE,entry.th32ProcessID)

}


如果您有任何意见,请告诉我。

我想您搞错了。您没有对运行nb.exe的进程执行任何操作,但正在以nb的进程ID作为退出代码退出当前进程。

您的格式设置混乱:您可以编辑您的问题。你说的“不能”是什么意思?它是否给出错误,报告成功但未完成,扫描过程中未找到正确的过程,或者什么?是的,您是正确的,谢谢。我发现了问题。但是,我没有使用ExitProcess,而是使用TerminateProcess。如何从线程的角度确保终止进程的安全性。我在网上找到的链接很少,但都不够。你没有。杀死另一个线程不会进行任何清理(析构函数等),还可能导致不应该发生的问题,例如臭名昭著的阻止关闭文件的卡住IO请求。@bally,上下文是什么?另一个进程是你的,你可以处理代码吗?通常,您会告诉另一个进程使用更激进的方法关闭(自身),并且只能将TerminateProcess作为最后手段,因为它已经挂起了。@bally,TerminateProcess接受句柄,而不是ID,并接受第二个参数。所以代码不可能和显示的完全一样。您需要获取该processID的句柄,并将其关闭。
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);

if (Process32First(snapshot, &entry) == TRUE)
{
while (Process32Next(snapshot, &entry) == TRUE)
{
 if (wcsicmp(entry.szExeFile, L"nb.exe") == 0)
{  
ExitProcess(entry.th32ProcessID);

CloseHandle(hProcess);
}
}
}

CloseHandle(snapshot);

return 1;