【问题标题】:FindWindow() doesn't find my window [C++]FindWindow() 找不到我的窗口 [C++]
【发布时间】:2012-06-07 02:18:26
【问题描述】:

这不是一个复杂的问题。我无法找到属于 iTunes 的句柄。但是,尽管 iTunes 在后台运行,但它一直告诉我它找不到窗口。所以我继续检查我是否错过了输入窗口名称,但 spy++ 指出我使用了正确的窗口名称和类名(见下文)。我确定这是一个小错误,但我似乎找不到它。有没有人有见识?提前致谢。

        HWND hwnd;
        hwnd = FindWindow((LPCWSTR)"iTunes",(LPCWSTR)"iTunes");
    if (hwnd != 0){
        cout << "WINDOW FOUND" << endl;
    } else { 
        cout << "WINDOW NOT FOUND" << endl; 
        cout << hwnd << endl;
    }

【问题讨论】:

    标签: hwnd findwindow


    【解决方案1】:

    您使用的 ANSI 字符串似乎是 FindWindow 的 Unicode 版本。

    许多Win32函数实际上是一对函数和一个宏。例如,FindWindow 的定义大致如下:

    HWND WINAPI FindWindowA(LPCSTR lpClassName, LPCSTR lpWindowName);
    HWND WINAPI FindWindowW(LPCWSTR lpClassName, LPCWSTR lpWindowName);
    
    #if (UNICODE)
    #  define FindWindow FindWindowW
    #else
    #  define FindWindow FindWindowA
    #endif
    

    尝试显式调用FindWindowA 或使用这样的宽字符串:

    HWND hwnd = FindWindow(L"iTunes", L"iTunes");
    

    【讨论】:

    • 完全没有问题。请记住,在使用 Win32 时,您几乎不需要强制转换。如果是,您可能传递了错误的参数;这就是我确定您调用的是哪个版本的 FindWindow 的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 2019-05-27
    • 2014-03-24
    • 1970-01-01
    相关资源
    最近更新 更多