FindWindow() не находит мое окно [C++]
Это не сложный вопрос. У меня проблемы с поиском ручки, которая принадлежит 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;
}
1 ответ
Решение
Вы используете строки ANSI с тем, что кажется версией Unicode FindWindow
,
Многие функции 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");