【问题标题】:RDP session launch applicationsRDP 会话启动应用程序
【发布时间】:2017-05-05 02:32:08
【问题描述】:

我已经使用 AutoIt 打开了一个 RDP 会话。代码如下:

$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 " & $host
$oRDP.DisconnectedText = "Disconnected from " & $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 会话中启动一个应用程序。我尝试了“ Send(#r) ”,以便使用 SendKeys 之类的功能发送路径,但此命令在我的计算机上执行,而不是在远程计算机上执行。

请问我该怎么办?

【问题讨论】:

    标签: autoit rdp


    【解决方案1】:

    发送 alt + home。这将在 rdp 会话中打开 windows 搜索,然后您可以将其发送文本,例如发送(“记事本”) 发送({输入})

    【讨论】:

    • 如何才能专注于 rdp 会话??
    • 使远程桌面连接窗口成为活动窗口,rdp会话将接收发送命令,只需从alt home开始。
    • 我不能做 alt home,因为我没有专注于它。alt home 在我的计算机上而不是在远程桌面上执行窗口搜索
    • 这将专门用于“远程桌面连接”应用程序。使用 winactivate 给你焦点,然后发送(!{home})。不确定它是否适用于您的情况。
    【解决方案2】:

    更新:

    一个更简单的选择:

    • 更改远程桌面连接设置(不在控件中 代码,但在通常的 Windows 快捷方式中。但似乎可以在 AutoIt 代码中使用键盘钩设置 keyboardhook setting 完成。
    • 在启动远程桌面时在窗口中查找“选项”按钮。
    • 在本地资源选项卡上选择 Windows 组合键仅在全屏模式下应用。
    • 在您的代码中更改这一行:

      $oRDP.Fullscreen = True

    • 包括一个暂停以确保控件已加载

      睡眠(5000)

      发送(“#r”)

    上一个答案:

    让我建议一个不是很“优雅”但应该可以工作的解决方法(测试正常):

    在远程桌面创建 Windows 虚拟关键字(屏幕键盘或 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}")
    

    (旁注:对于任何在远程桌面上有快捷方式的可执行文件,只需双击即可,无需虚拟键盘)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多