FindWindow()找不到我的窗口[C ++]

时间:2012-06-01 20:41:18

标签: hwnd findwindow

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

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

1 个答案:

答案 0 :(得分:5)

您正在使用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");