Pyautogui on RDP

6

我正在使用Python 3中的pyautogui在Windows 10上进行虚拟机远程桌面连接。不幸的是,当我关闭远程连接时,程序停止运行并报“OSError:屏幕截图失败”错误。

我已经在线上寻找解决方案,但唯一的解决办法是从这个链接中找到:

使用允许你保持输出显示的远程桌面客户端,即使你最小化窗口或关闭计算机。我使用终端 (https://terminals.codeplex.com/ - 我与他们没有任何关系,只是推荐它因为它解决了我的问题)。你可以设置它来持久显示,并且你的代码应该可以正常运行。

问题是我找不到持久显示的设置。我还发现这个网站:

pyautogui._pyautogui_x11._display = Xlib.display.Display(
            os.environ['DISPLAY']
        )

...但似乎它也无法工作(给我错误...)。

你有什么解决方法来达到这个效果吗?

2个回答

7
根据这里的回答:
当您断开RDP连接时,Windows会锁定计算机并不再渲染屏幕,因此任何需要GUI的自动化应用程序都无法工作。 要在不丢失屏幕的情况下断开RDP连接,可以使用以下命令以管理员身份断开连接(最好创建一个bat文件,并在需要断开RDP时作为管理员运行该文件):
for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do (
 %windir%\System32\tscon.exe %%s /dest:console )

2
我已经决定使用TightVNC代替远程桌面,并将鼠标光标分离。

你能解释一下你使用TigerVNC的步骤和配置吗?你是否需要修改分辨率设置?或者在Windows上启用自动登录?你能否通过Windows任务计划程序安排任务,还是必须手动登录后运行它们? - emalcolmb
你好,emalcomb。1 - 我没有必要。 2 - 据我记得(是以前的工作),我已经使用凭据访问了远程。 3 - 登录后手动操作。 - Lore
唯一的其他特定配置步骤是从选项中分离鼠标。 - Lore

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