2014-10-22 165 views
0

我有一个远程桌面,我试图运行一个简单的脚本,以防止空闲会话超时,这是3分钟(很烦人)。例如,脚本应该每2.5分钟左右按一下“A”键。Autoit controlsend远程桌面

问题是,在远程桌面窗口常常是不活动的/最小化:

1)如果我尝试运行“里面”的远程桌面这样一个剧本,我仍然得到断开,尽管它确实可以工作(继续即使屏幕上显示“空闲定时器过期”消息,也可以输入或创建/删除文件等)。我相信系统需要一些“外部”行动。

2)如果我跑我的电脑上的脚本,它doesn'do任何东西的远程桌面(我有一个开放的笔记本电脑在那里,也没有打字)上:

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

我认为问题出在”controlid“部分,我通过自动窗口信息获取。如果我将controlid设置为“” - 它工作,但只有当窗口当前处于活动状态时才有效。

我见过一个注册表键的解决方案,但似乎并没有为我工作。

如果任何人有关于解决这个任何想法,请不要憋:)

回答

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