Как `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».

Другие вопросы по тегам