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");
Другие вопросы по тегам