为什么下面的代码总是打印出127(“找不到指定的过程。”),即使它找到“firefox.exe”并成功终止??
#include<Windows.h>
#include <TlHelp32.h>
#include<iostream>
using namespace std;
int main( int, char *[] )
{
PROCESSENTRY32 entry;
entry.dwSize = sizeof(PROCESSENTRY32);
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (Process32First(snapshot, &entry) == TRUE)
{
while (Process32Next(snapshot, &entry) == TRUE)
{
if (_tcscmp(entry.szExeFile, TEXT("firefox.exe")) == 0)
{
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, entry.th32ProcessID);
DWORD d = GetLastError();
cout<<d<<'\n';
TerminateProcess(hProcess,0);
CloseHandle(hProcess);
}
}
}
CloseHandle(snapshot);
return 0;
}
最佳答案
在检查 GetLastError
之前,您需要检查特定函数的返回值。
GetLastError
将始终返回由 API 函数设置的最后一个错误代码。但是,并非所有函数都会在它们成功 时设置最后一个错误代码。因此 GetLastError
的结果可能是在程序的其他部分设置的错误代码。
所以在您的情况下,根据 OpenProcess
的 MSDN 文档,如果失败,该函数将返回 NULL
。因此,如果 OpenProcess
返回的不是 NULL
,则无需查看 GetLastError
。
请注意,最后一个错误代码是当前线程唯一的。
关于windows - 获取上一个错误 127,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10788904/