RDP会话启动应用程序

时间:2014-07-07 13:59:50

标签: autoit rdp

我使用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会话中启动一个应用程序。我试过了#34;发送(#r)&#34;为了使用类似SendKeys的函数发送路径,但此命令在我的计算机上执行,而不是在远程计算机上执行。

我该怎么办?

2 个答案:

答案 0 :(得分:0)

发送alt + home。这将在rdp会话中打开Windows搜索,然后您可以将其发送到例如发送(&#34;记事本&#34) 发送({输入})

答案 1 :(得分:0)

<强>更新

一个更简单的选择:

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

    $ oRDP.Fullscreen = True

  • 包含暂停以确保已加载控件

    睡眠(5000)

    发送(&#34;#r&#34;)

上一个回答:

让我建议一个不太优雅的解决方法&#39;但应该工作(测试好):

在远程桌面上快速查看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}")

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