Приложения для запуска сеанса RDP

#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}")
  

(Примечание в сторону: для любого исполняемого файла с ярлыком на удаленном рабочем столе просто отправьте двойной щелчок, без использования виртуальной клавиатуры)