2012-05-29 3 views
3

У меня есть приложение на C#, которое отправляет ключи другой программе. Для этого я вызываю метод SetForegroundWindow перед отправкой ключей, которые работают. Проблема в том, что когда я подключен к компьютеру с помощью RDC и сворачиваю окно RDC или отключая его, клавиши не отправляются.SetForegroundWindow в подключении к удаленному рабочему столу

Это происходит потому, что в режиме RDC метод SetForegroundWindow не работает в минимизированном или отключенном состоянии. Я пробовал использовать SetActiveWindow, SetFocus и BringWindowToTop, но не повезло. Есть ли способ сделать это?

+0

Я столкнулся с той же концепцией несколько недель назад - мне захотелось определить, было ли мое окно/сеанс RDP сведено к минимуму/закрыто, или соединение неактивно. Мне удалось обойти это, поэтому я хотел знать, что вы пытались сделать. Почему вы устанавливаете SetForegroundWindow перед отправкой ключей. Я хочу знать всю вашу цель, потому что, насколько я знаю, не все нативные методы работают в режиме RDC. –

+0

Возможно, вам стоит рассмотреть возможность использования некоторого API для непосредственного задания ваших значений в элементах управления приложения (по их ручкам). На самом деле это не совсем сложно. – Letterman

ответ

0

Это очень распространенная проблема. Когда вы отключите или скроете окно RDP, контекст графического интерфейса будет потерян. Но вы можете сохранить RDP без минимизации (фокус может быть потерян безопасно). Другими словами, просто выключите полноэкранный режим и перейдите в другое окно, если вы хотите продолжить работу локально.

В нашей команде тестирования команды используется подход «ведущий-ведомый»: главный хост инициирует удаленные подключения и не позволяет им минимизировать до тех пор, пока не будет выполнена каждая задача автоматизации графического интерфейса.