当RDP处于最小化状态时,如何使用pywinauto在RDP中恢复窗口

时间:2017-11-06 12:45:51

标签: python-2.7 pywinauto

我一直在使用pywinauto打开命令提示符(Mingw-64)并使用 type_keys

传递命令

它在我的本地系统中正常工作但是,当我将代码托管到RDP服务器时,当RDP处于最小化状态

请给我一个合适的解决方案,让我知道任何包装是否有相同的目的。

谢谢!

2 个答案:

答案 0 :(得分:1)

有几点需要改进。

  1. 最好使用标准Python模块subprocess和stdin重定向来与命令行应用程序通信。我强烈建议你采用这种方式来抵抗RDP最小化。

  2. RDP在最小化状态下不提供GUI上下文(任何GUI自动化工具都会在这里放弃)。要解决此问题,只需将RDP从全屏模式切换到恢复窗口状态(非最小化!),在RDP窗口内运行GUI自动化脚本并快速切换到本地计算机(到另一个窗口)并继续工作而不影响自动化脚本。只是不要最小化RDP。如果您很少这样做,这是一个手动快速入侵。

  3. 自动化的第三件事是使用带有键psexec的命令-i(交互式)。这样,您可以自动运行带有GUI上下文的远程命令,而无需手动破解。只需找到并下载PsexecTools(推荐)或学习Power Shell的类似命令。

  4. 要消除这个问题,只需使用TightVNC等VNC服务器软件而不是RDP。如果您至少使用过一次RDP,则必须重新启动远程计算机。另一个可能的缺陷是VNC显示不是虚拟的(如RDP会话),因此它需要为您的视频卡提供相关的显示驱动程序。否则您可能面临黑屏或小分辨率。 VNC的最大优势即使您断开当前会话(即在回家前关闭笔记本电脑),它也能保持GUI上下文。

答案 1 :(得分:1)

可以在这里找到有用的答案:https://support.smartbear.com/testcomplete/docs/testing-with/running/via-rdp/in-minimized-window.html

并且必须这样做才能与RDP断开连接而无效:

  

要断开与远程桌面的连接,请在   远程计算机(在“远程桌面”窗口中)作为管理员:

     

%windir%\ System32 \ tscon.exe RDP-Tcp#NNN / dest:console

     

其中RDP-Tcp#NNN是当前远程桌面会话的ID,   例如,RDP-Tcp#0。您可以在Windows任务管理器上看到它   “会话”列中的“用户”标签。

     

您将看到“您的远程桌面会话已结束”消息,并且   远程桌面客户端将关闭。但是所有的程序和测试   远程计算机将继续正常运行。