2014-11-10 3 views
1

У меня есть программа, которая использует PyKeyboard.tap_key() для отправки нажатий клавиш в другое приложение, которое я автоматизирую (приложение не может быть автоматизировано любым другим путь, к сожалению). Я запускаю его на удаленном компьютере под управлением Windows, к которому я обращаюсь через Remote Desktop.PyKeyboard.tap_key() не работает, когда я отключается от удаленного рабочего стола

PyKeyboard.tap_key() работает хорошо, пока я подключен, но если я отключусь от сеанса удаленного рабочего стола, нажатия клавиш больше не будут доставлены.

Другой вопрос: Отключает ли удаленный сеанс эквивалент «Выход из системы ->« Выключить пользователя »? Я предполагаю, что проблема в том, что пользователь не вошел в систему (хотя сеанс запущен).

+0

Упрощенный, я сделал сценарий, чтобы открыть блокнот и набрать текст. Когда я подключен к виртуальной машине, сценарий работает нормально. Когда я не подключен (запустите сценарий, затем отключитесь от машины), скрипт откроет блокнот, но ничего не написано – Inox

+0

И по подключенному я имею в виду вход в систему. Это виртуальная машина, к которой можно получить доступ только через локальную сеть, и требуется пароль. Не нужно, чтобы окно VM было сосредоточено. Он отлично работает, когда он сведен к минимуму, и мой фактический компьютер (тот, который я использую для подключения к виртуальной машине) на самом деле заблокирован – Inox

+0

Конечно, позвольте мне опубликовать сценарий блокнота – Inox

ответ

1

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

От this MSDN thread:

Приложения не разрешается посылать вход на рабочем столе, когда компьютер заблокирован по соображениям безопасности. Я тестировал изменение положения курсора, когда RDP был сведен к минимуму, но на самом деле курсор мыши не отображается, когда сеанс восстанавливается после минимизации, и когда он восстанавливается, курсор не отображается до тех пор, пока мышь не будет перемещена назад по видимой области, в этом случае он отображается тогда, когда пользователь перемещает его. На самом деле, даже если окно RDP будет восстановлено, но мышь на главной машине не находится над окном, курсор мыши в окне RDP не будет виден. Так что это, вероятно, тоже невозможно. Если вы пытаетесь добиться определенного поведения, может быть другой способ сделать это, кроме перемещения мыши с помощью имитированного ввода.

+0

Спасибо за ответ. Не уверен, что это та же проблема, что и мой скрипт, когда клиент RDP сведен к минимуму, и даже когда мой фактический компьютер заблокирован. Это происходит только при отключении клиента RDP (и никто не подключен к RD). – Inox

+0

Минимизация RDP и блокировка вашего собственного компьютера не блокирует удаленный компьютер - отключается только отключение. – sashoalm

Смежные вопросы