这不是一个复杂的问题。我找不到属于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;
}
答案 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");