Autoit controlsend远程桌面
问题描述:
我有一个远程桌面,我试图运行一个简单的脚本,以防止空闲会话超时,这是3分钟(很烦人)。例如,脚本应该每2.5分钟左右按一下“A”键。Autoit controlsend远程桌面
问题是,在远程桌面窗口常常是不活动的/最小化:
1)如果我尝试运行“里面”的远程桌面这样一个剧本,我仍然得到断开,尽管它确实可以工作(继续即使屏幕上显示“空闲定时器过期”消息,也可以输入或创建/删除文件等)。我相信系统需要一些“外部”行动。
2)如果我跑我的电脑上的脚本,它doesn'do任何东西的远程桌面(我有一个开放的笔记本电脑在那里,也没有打字)上:
ControlSend(“[CLASS :TscShellContainerClass]“,”“,”[CLASS:OPContainerClass; INSTANCE:1]“,”{A}“)
我认为问题出在”controlid“部分,我通过自动窗口信息获取。如果我将controlid设置为“” - 它工作,但只有当窗口当前处于活动状态时才有效。
我见过一个注册表键的解决方案,但似乎并没有为我工作。
如果任何人有关于解决这个任何想法,请不要憋:)
答
我知道它的晚,但这里是我唯一能得到工作;它涉及激活窗口。我试过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