GetForegroundWindow возвращает Null, когда удаленный рабочий стол отключен - PullRequest
2 голосов
/ 17 сентября 2009

У меня есть тест, который запускает приложение и проверяет его запуск через вызовы GetForegroundWindow (). Тест выполняется на удаленной машине, к которой мы обычно обращаемся через удаленный рабочий стол. Когда у нас открыт сеанс rdp для машины, тест завершается, и все хорошо. Однако, как только мы закроем удаленный рабочий стол, тест не пройден, потому что GetForegroundWindow всегда возвращает Null. Я проверил, что активный рабочий стол после отключения по-прежнему имеет значение «По умолчанию», поэтому я уверен, что не сталкиваюсь с проблемой . Есть идеи, что может быть причиной этого?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 25 марта 2015

Если ваш удаленный рабочий стол является виртуальной машиной, вы можете использовать команду tscon:

tscon 1 /dest:console где "1" - идентификатор активного сеанса.

Эта команда отключает RDP, но отправляет сеанс на консоль. Вы можете ловить окна, делать скриншоты и т.д ...

0 голосов
/ 20 сентября 2009

Я предполагаю, что при возвращении GetForegroundWindow у вас есть способ проверить, что возвращенный HWND получен из интересующего приложения, а не из какого-либо другого окна.

В любом случае используйте EnumWindows, чтобы получить все окна на экране. Найдите HWND, соответствующее приложению, которое вы ищете.

Если у вас нет способа проверить HWND, позвоните в EnumWindows перед запуском приложения, чтобы получить общее количество окон на экране. Затем запустите приложение с помощью скрипта автоматизации. Опрос счетчика окон через EnumWindows, пока счетчик не увеличится на единицу.

...