#autoit #rdp
#автоматический запуск #rdp
Вопрос:
Я открыл сеанс RDP с помощью AutoIt. Вот код:
$host = "" ; <---- IP
$hGUI = GUICreate("Terminal Serveur", 952, 675, -1, -1, $WS_OVERLAPPEDWINDOW $WS_CLIPSIBLINGS $WS_CLIPCHILDREN)
$oRDP = ObjCreate("MsTscAx.MsTscAx.2")
$oRDP_Ctrl = GUICtrlCreateObj($oRDP, 64, 44, 800, 600)
GUICtrlSetResizing(-1, $GUI_DOCKALL)
GUICtrlSetStyle($oRDP_Ctrl , $WS_VISIBLE)
$oRDP.DesktopWidth = 800
$oRDP.DesktopHeight = 600
$oRDP.Fullscreen = False
$oRDP.ColorDepth = 16
$oRDP.AdvancedSettings3.SmartSizing = True
$oRDP.Server = $host
$oRDP.UserName = "" ; <--- Username
$oRDP.Domain = ""
$oRDP.AdvancedSettings2.ClearTextPassword = "" ; <--- Password
$oRDP.ConnectingText = "Connecting to " amp; $host
$oRDP.DisconnectedText = "Disconnected from " amp; $host
$oRDP.StartConnected = True
$oRDP.Connect()
$oShel = ObjCreate("shell.application")
$oShel_Ctrl = GUICtrlCreateObj($oShel, 64, 44, 800, 600)
GUICtrlSetStyle($oShel_Ctrl , $WS_VISIBLE)
GUISetState(@SW_SHOW, $hGUI)
Send ("#r") ; !!
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
$oRDP.Disconnect()
Exit
EndSwitch
WEnd
Теперь я хочу запустить приложение в сеансе RDP. Я попытался «Отправить (# r)», чтобы отправить путь с помощью функции, подобной SendKeys, но эта команда выполняется на моем компьютере, а не на удаленном компьютере.
Что я могу сделать, пожалуйста?
Ответ №1:
Отправьте alt home. Это откроет поиск Windows в сеансе rdp, которому вы затем можете отправить текст, например, отправить («блокнот») отправить ({enter})
Комментарии:
1. Как вы можете сосредоточиться на сеансе rdp??
2. Сделайте окно подключения к удаленному рабочему столу активным, и сеанс rdp будет получать команды отправки, просто начните с alt home.
3. Я не могу выполнить alt home, потому что у меня нет фокуса на нем . alt home выполняет поиск окна на моем компьютере, а не на рабочем столе remonte
4. Это будет особенно работать для приложения «подключение к удаленному рабочему столу». Используйте winactivate, чтобы сфокусироваться, а затем отправить (!{home}). Не уверен, сработает ли это в вашем случае.
Ответ №2:
Обновить:
Гораздо более простая альтернатива:
- Измените настройки подключения к удаленному рабочему столу (не в управляющем коде, а в обычном сокращении Windows. Но, похоже, это можно было бы сделать в коде AutoIt с помощью настройки keyboardhook keyboardhook setting ) .
- Ищите кнопку Параметров в окне при запуске удаленного рабочего стола.
- На вкладке локальные ресурсы выберите сочетания клавиш Windows, которые применяются только в полноэкранном режиме.
-
Измените эту строку в своем коде:
$oRDP.Fullscreen = True
-
Включите паузу, чтобы убедиться, что элемент управления загружен
Переход в режим ожидания (5000)
Отправить («#r»)
Предыдущий ответ:
Позвольте мне предложить обходной путь, не очень «элегантный», но должен сработать (протестировано нормально):
На удаленном рабочем столе выполните сокращение ключевого слова Windows Virtual (экранная клавиатура или OSK).
-
Найдите положение значка сокращения
-
В вашем коде отправьте двойной щелчок в этой позиции, чтобы запустить экранную клавиатуру
-
Затем отправьте щелчки на позиции желаемых клавиш
Что-то вроде этого:
Sleep(5000)
MouseClick("left",512,191,2) ;start virtual keyword
Sleep(1000)
MouseClick("left",553,807,1) ;click
Sleep(100)
MouseClick("left",633,740,1)
Sleep(1000)
Send("notepad")
Sleep(1000)
Send("{ENTER}")
(Примечание в сторону: для любого исполняемого файла с ярлыком на удаленном рабочем столе просто отправьте двойной щелчок, без использования виртуальной клавиатуры)