Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ GetLastError()将0返回给失败的窗口句柄_C++_Windows - Fatal编程技术网

C++ GetLastError()将0返回给失败的窗口句柄

C++ GetLastError()将0返回给失败的窗口句柄,c++,windows,C++,Windows,我制作了一个访问游戏的程序。 我的程序正在使用FindWindow功能查找游戏窗口,如果FindWindow失败,程序将打印一条错误消息 我的问题是GetLastError函数总是返回0 (“操作已成功完成。”) 为什么它总是返回0 示例: #include <iostream> #include <Windows.h> void GameAccess(LPCSTR winname) { HWND GameWindow = FindWindowA(NULL,

我制作了一个访问游戏的程序。 我的程序正在使用
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;
}
#包括
#包括
无效游戏访问(LPCSTR winname)
{
HWND GameWindow=FindWindowA(NULL,winname);
如果(GameWindow==FALSE){
std::cout您想要这个:

  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);
        }
    }
HWND GameWindow=FindWindowA(NULL,winname);
如果(GameWindow==NULL){//比较NULL
auto errorcode=GetLastError();//要做的第一件事
std::cout您想要这个:

  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);
        }
    }
HWND GameWindow=FindWindowA(NULL,winname);
如果(GameWindow==NULL){//比较NULL
auto errorcode=GetLastError();//要做的第一件事


std::你能在Windows 95上运行吗?@TanveerBadar不,为什么?与
FindWindowEx()相比,你为什么要执行
FindWindowA()
?除了扩展功能外,它还将根据编译所依据的字符集绑定到正确的ASCII与Unicode。在调用任何其他函数(和
运算符)之前,您需要检索最后一个错误。您还应该使用
if(handle==NULL)
而不是
if(procID==FALSE)
(我怀疑这些来自于将非常常见的
if(!x)
转换为
if(x==FALSE)
,但它们并没有说同样的话。)你在Windows 95上运行吗?@TanveerBadar不,为什么?为什么你要做
FindWindowA()
而不是
FindWindowEx()
?除了扩展功能外,它还将根据编译所依据的字符集绑定到正确的ASCII与Unicode。在调用任何其他函数(和
运算符)之前,您需要检索最后一个错误。您还应该使用
if(handle==NULL)
而不是
if(procID==FALSE)
(我怀疑这些来自于将非常常见的
if(!x)
转换为
if(x==FALSE)
,但它们实际上说的不是同一件事。)@nakE我可以复制这个。看起来Microsoft文档是错误的。这不是第一次发生。顺便说一句,
else
部分还有其他不相关的问题。嘿!你编辑过你的帖子吗?你说的“不相关的问题”是什么意思,你能解释一下吗?@nakE是的,我显然编辑了答案,看一下
else
部分和我添加的注释,并将其与原始代码进行比较。你试过了吗?我仍然得到0作为错误代码。@nakE阅读了我的第一条注释。我也得到了0。我想Microsoft文档关于
GetLastError()的内容是错误的
@nakE我可以复制这个。看起来Microsoft文档是错误的。这不是第一次发生。顺便说一句,
其他部分中还有其他不相关的问题。嘿!你编辑了你的帖子吗?你说的“不相关的问题”是什么意思,你能解释一下吗?@nakE是的,我显然编辑了答案,看看
其他部分和我添加的注释,并将其与原始代码进行比较。你试过了吗?我仍然得到0作为错误代码。@nakE阅读了我的第一条注释。我也得到了0。我想Microsoft文档中关于
GetLastError()
的内容是错误的。