【问题标题】:screen capture failed by minimizing remote desktop connection in python通过在 python 中最小化远程桌面连接,屏幕捕获失败
【发布时间】:2020-12-17 00:56:05
【问题描述】:

我使用 python 编写了一个脚本,我想在服务器中运行它。我使用 Windows 远程连接来连接到此服务器,但我遇到了问题。

我想在一天中的特定时间运行 Image Grab 来截取屏幕截图。我正在使用 Pyautogui 包进行屏幕截图。但是当程序运行时,出现错误,程序停止执行。

我有以下代码,用于在远程桌面 (RDP) 会话中捕获屏幕截图。

import pyautogui
import time

def imagegrab(): 

    timedata = time.localtime()
    current_time = time.strftime("%H:%M", timedata)
    if (current_time == "10:00"  and current_time == "12:00"):
        
        image=pyautogui.screenshot()
        image.save("box.png")
 
    t = threading.Timer(30.0, imagegrab)
    t.start()
    print("thread calling.")
print(imagegrab())

但如果此时远程屏幕最小化,它会抛出 OSError: screen grab failed。 如何解决这个问题?是否有其他可能的方法来捕获最小化远程桌面的屏幕。

提前致谢。

【问题讨论】:

  • 我遇到了完全相同的问题。如果有人能提供解决方案来解决它,我会非常高兴......

标签: python-3.x screenshot remote-server pyautogui rdp


【解决方案1】:

根据this post 中的 Ranorex 团队的说法,当最小化 RDP 时,它会锁定屏幕并且无法完成捕获。提供的解决方案是在您的计算机和测试计算机/服务器之间使用 VM。您通过 RDP 连接到虚拟机,然后从虚拟机通过 RDP 连接到测试计算机/服务器。这样,虽然您从不最小化 VM 上的测试计算机/服务器窗口,但您可以最小化计算机上的 VM 窗口。

我进行了测试,它没有任何问题。我不会肯定这个解决方案适用于所有情况,但它似乎是一个很好的起点。

请注意,中间虚拟机不需要是杀手级机器......它只需要足够强大以运行 RDP。

【讨论】:

    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 2021-08-17
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 2011-11-30
    • 2013-05-04
    相关资源
    最近更新 更多