【问题标题】:How to restore a window in RDP using pywinauto, when RDP is in Minimized state当 RDP 处于最小化状态时,如何使用 pywinauto 在 RDP 中恢复窗口
【发布时间】:2017-11-06 12:45:51
【问题描述】:

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

传递命令

它在我的本地系统中正常工作,但是当我将代码托管到 RDP 服务器时,当 RDP 处于最小化状态时,我无法恢复窗口并传递命令

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

谢谢!

【问题讨论】:

    标签: python-2.7 pywinauto


    【解决方案1】:

    有几点需要改进。

    1. 最好使用标准 Python 模块 subprocess 和标准输入重定向来与命令行应用程序通信。我强烈推荐您使用这种可以抵抗 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 上下文。

    【讨论】:

      【解决方案2】:

      可以在这里找到有用的答案: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 任务管理器中看到它 会话列中的用户选项卡。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-27
        • 1970-01-01
        • 2017-12-31
        相关资源
        最近更新 更多