Как `FindWindow` окно, которое не отображается в Spy++?
Я отлаживаю приложение Windows с помощью IDA Pro и вижу, что однажды оно вызывает FindWindowA
и успешно находит окно с заданным именем класса.
Однако, когда я использую Spy++, чтобы найти окна с заданным именем класса, он просто нигде не существует, и я не могу его найти.
Интересно, как я могу найти то же самое окно, которое внутренне каким-то образом находит приложение, когда оно вызывает FindWindowA
? Интересно, почему мое внешнее приложение не может найти такое же окно...
2 ответа
Как правило, окно не может скрыться от Spy++ (если только программа намеренно не подключит Spy ++, чтобы скрыть окно). Spy++ (и другие подобные программы) предназначены для отображения всех окон, известных ОС.
В любом случае, используя IDA, вы можете увидеть фактические значения параметров, которые передаются FindWindowA()
так что просто скопируйте те же значения в ваш собственный код. Если это другое приложение может найти окно, значит, ваше приложение может использовать те же значения параметров.
В моем случае я не смог найти окно, которое искал, потому что использовал 32-битную версию вместо 64-битной (программное обеспечение, которое я искал, было 64-битным). Поэтому мне пришлось использовать spyxx_amd64.exe вместо spyxx.exe в папке «C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools».