自动控制发送远程桌面

时间:2014-10-22 10:23:01

标签: desktop autoit

我有一个远程桌面,我正在尝试运行一个简单的脚本来防止空闲会话超时,这是3分钟(非常烦人)。例如,脚本应该每2.5分钟左右按一次“A”键。

问题是,远程桌面窗口通常处于非活动/最小化状态,并且:

1)如果我尝试在远程桌面“内部”运行这样的脚本,我仍然会断开连接,尽管它确实有效(继续输入或创建/删除文件等,即使“空闲计时器已过期”消息已打开屏幕)。我相信系统需要一些“外部”行动。

2)如果我在我的电脑上运行脚本,它在远程桌面上没有任何东西(我在那里有一个打开的笔记本,并且没有打字):

ControlSend(“[CLASS:TscShellContainerClass]”,“”,“[CLASS:OPContainerClass; INSTANCE:1]”,“{A}”)

我认为问题在于“controlid”部分,我通过自动窗口信息得到了这部分。如果我将controlid设置为“” - 它可以工作,但前提是窗口当前处于活动状态。

我见过一个注册表项解决方案,但似乎对我不起作用。

如果有人对此有任何想法,请不要拖延:)

1 个答案:

答案 0 :(得分:0)

我知道现在已经很晚了,但这是我唯一可以上班的事情;它涉及激活窗口。我试过ControlFocus,但没有用,所以这就是我得到的。

您应该可以根据需要修改脚本。

#include<Array.au3>
OPT("WinTitleMatchMode",2)

$a = WinList("Remote Desktop Connection")

;_ArrayDisplay($A)

ConsoleWrite(UBound($A)& @CRLF)
FOR $N = 1 to $A[0][0]
    $hActiveWindow = WinGetHandle("")

    WinActivate($a[$N][1]) ;comment if using controlfocus
    ;ControlFocus($a[$N][1],"","") ;comment if using winactivate
    ControlSend($a[$N][1],"","","^+{ESC}")

    WinActivate($hActiveWindow)
Next