保持远程桌面会话“活跃”

9
我正在使用AutoIt来自动化GUI操作(连接到运行要自动化的应用程序的机器,使用RDP)。每当我最小化RDP窗口(使用mRemote)时,就不会执行任何其他AutoIt命令。
也许当我最小化窗口时,RDP会话被标记为“非活动状态”(如果是这样,我不知道是否正确,也不知道如何配置此行为)。我考虑了两个选项来克服这个问题:
  1. 将我的进程作为某个提升的用户(或服务)运行。
  2. 查找控制会话是否标记为非活动状态的配置,并覆盖它。
如何在最小化RDP窗口时保持远程桌面会话处于“活动”状态?
4个回答

5

我们曾经遇到了远程桌面连接(RDP)的同样问题。我们使用的一个解决方法是打开另一个远程桌面会话并连接到同一台服务器:

  1. 使用RD连接到 server
  2. 从第1步的RD中,再次连接到 server

这样,即使您最小化或断开第一个RD会话,第二个会话仍将保持“活动”状态。当然,您的远程桌面服务器必须支持同一个用户的多个连接。


1
@liortal 是的,没错。我猜这与窗口绘制方式有关:如果窗口当前不可见,则不会接收到 WM_PAINT 消息。当你最小化远程桌面窗口时,它不再可见,因此不会被绘制;此外,它也不会接收鼠标事件:毕竟远程桌面共享鼠标与客户端桌面。 - Alexey Ivanov

2

您可能希望将当前的RDP会话附加到CONSOLE上。在这种情况下,即使断开连接,UI仍将保持活动状态。

TSCON {sessionid | sessionname} /DEST:CONSOLE

0
我的夜间回归测试套件曾经在本地机器上失败,因为企业规则会在14分钟的不活动后自动锁定机器。所以我编写了一个小的vbScript程序,每12分钟按下“PrintScreen”键,这真正解决了问题。虽然这不是在RDP上,但在远程机器上执行类似的操作也会有帮助。

0

如果完全没有rdp会话,而您仍然想通过AutoIt自动化它,则接受的答案无效。

他们说在这种情况下,您不应该使用WinActivate,而应该改用AutoIt脚本中的ControlSend,这样它就可以平稳地工作。是的,它有效,我已经检查过了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接