我有一个远程桌面,我正在尝试运行一个简单的脚本来防止空闲会话超时,这是3分钟(非常烦人)。例如,脚本应该每2.5分钟左右按一次“A”键。
问题是,远程桌面窗口通常处于非活动/最小化状态,并且:
1)如果我尝试在远程桌面“内部”运行这样的脚本,我仍然会断开连接,尽管它确实有效(继续输入或创建/删除文件等,即使“空闲计时器已过期”消息已打开屏幕)。我相信系统需要一些“外部”行动。
2)如果我在我的电脑上运行脚本,它在远程桌面上没有任何东西(我在那里有一个打开的笔记本,并且没有打字):
ControlSend(“[CLASS:TscShellContainerClass]”,“”,“[CLASS:OPContainerClass; INSTANCE:1]”,“{A}”)
我认为问题在于“controlid”部分,我通过自动窗口信息得到了这部分。如果我将controlid设置为“” - 它可以工作,但前提是窗口当前处于活动状态。
我见过一个注册表项解决方案,但似乎对我不起作用。
如果有人对此有任何想法,请不要拖延:)
答案 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