我制作了一个访问游戏的程序。
我的程序使用 FindWindow
函数寻找游戏窗口,如果 FindWindow
失败,程序会打印一条错误消息。
我的问题是 GetLastError
函数总是返回 0。
("操作成功完成。")
- 为什么总是返回0?
示例:
#include <iostream>
#include <Windows.h>
void GameAccess(LPCSTR winname)
{
HWND GameWindow = FindWindowA(NULL, winname);
if (GameWindow == FALSE) {
std::cout << "Failed to FindWindow & Error Code: " << GetLastError();
Sleep(3000);
exit(1);
}
else {
DWORD procID;
GetWindowThreadProcessId(GameWindow, &procID);
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, procID);
if (procID == FALSE) {
std::cout << "procID Failed & Error Code: " << GetLastError();
Sleep(3000);
exit(1);
}
}
}
int main()
{
GameAccess("myGame");
return 0;
}
最佳答案
你想要这个:
HWND GameWindow = FindWindowA(NULL, winname);
if (GameWindow == NULL) { // compare to NULL
auto errorcode = GetLastError(); // 1st thing to do
std::cout << "Failed to FindWindow & Error Code: " << errorcode;
Sleep(3000);
exit(1);
}
else {
DWORD procID;
GetWindowThreadProcessId(GameWindow, &procID);
HANDLE handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, procID);
if (handle == NULL) { // compare handle to NULL, not procID to FALSE
auto errorcode = GetLastError(); // 1st thing to do
std::cout << "procID Failed & Error Code: " << errorcode;
Sleep(3000);
exit(1);
}
}
您还需要关闭 OpenProcess
返回的句柄如果它在某个时候不是 NULL。
std::cout <<
天知道错误代码是什么。
关于c++ - GetLastError() 返回 0 到失败的窗口句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59321280/