2009-09-17 5 views
2

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

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

+1

Я боюсь, что на самом деле вы столкнулись с * этой проблемой (то есть системой безопасности Windows). Когда вы сворачиваете или отключаете сеанс RDP - ваш сеанс переключается на защищенный рабочий стол, и некоторые API просто не работают. Проверьте здесь: http://www.tech-archive.net/Archive/Windows/microsoft.public.windows.terminal_services/2008-11/msg00472.html – Andrey

ответ

0

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

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

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

0

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

tscon 1 /dest:console, где «1» это идентификатор активного сеанса.

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