问题描述
我使用python编写了一个脚本,我想在服务器上运行它。我使用Windows远程连接来连接到此服务器,但是我遇到了问题。
我想运行Image Grab以便在一天中的特定时间拍摄屏幕截图。我正在使用pyautogui软件包进行截图。但是,当程序运行时,会发生错误并停止执行。
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:屏幕抓取失败。 如何解决这个问题?还有其他可能的方法来捕获最小化远程桌面的屏幕。
谢谢。
解决方法
根据 this post 中的 Ranorex 团队的说法,当 RDP 最小化时,它会被屏幕锁定并且无法进行捕获。提供的解决方案是在您的计算机和测试计算机/服务器之间使用 VM。您通过 RDP 连接到 VM,然后从 VM 通过 RDP 连接到测试计算机/服务器。这样,虽然您从不最小化 VM 上的测试计算机/服务器窗口,但您可以最小化计算机上的 VM 窗口。
我进行了测试,它没有任何问题。我不会肯定这个解决方案适用于所有情况,但它似乎是一个很好的起点。
请注意,中间 VM 不需要成为杀手级机器……它只需要足够强大以运行 RDP。