FindWindowA не находит некоторые окна - PullRequest
0 голосов
/ 11 марта 2019

Я новичок в c ++, и FindWindowA работает для некоторых процессов, а не для других, например: FindWindowA(NULL, "Discord"); будет работать, но FindWindowA(NULL, "Fortnite"); не будет.

enter image description here

Кто-нибудь знает почему?Спасибо.

1 Ответ

2 голосов
/ 11 марта 2019

FindWindow находит только окна верхнего уровня.Если вы ищете точное совпадение с заголовком окна, вы должны учитывать скрытые символы (пробел, табуляция и т. Д.).

Даже если вы найдете заголовок окна, он будет работать толькоесли это окно не локализовано, т. е. если программа, создающая это окно, локализовано для другого языка, то вы также должны локализовать строку поиска.

Более надежный подход заключается в поиске имени класса, поскольку это, как правило, не будет локализовано: FindWindow("myclass", NULL);

Конечно, это все равно не удастся, если есть скрытое окно верхнего уровня, которое создает дочернее окно, содержащее искомое окно.Чтобы получить это окно, вы можете позвонить EnumWindows, чтобы получить дескриптор каждого окна верхнего уровня, и для каждого найденного окна верхнего уровня вы затем позвоните EnumChildWindows.

...