在 Azure 上的无头虚拟机上捕获屏幕截图

问题描述 投票:0回答:1

我有一个 python 代码,可以捕获我放在 azure 上的虚拟机中的屏幕截图 代码示例:

import os
import pyautogui
import time
from datetime import datetime

def take_screenshot():
    desktop_path = os.path.join(os.path.expanduser('~'), 'Desktop')
    timestamp = datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
    screenshot_file = os.path.join(desktop_path, f'{timestamp}.png')
    screenshot = pyautogui.screenshot()
    screenshot.save(screenshot_file)
    print(f"Screenshot saved as '{screenshot_file}'")

# Run the screenshot function every 10 seconds
while True:
    take_screenshot()
    time.sleep(10)

当我通过 RDP 连接时,代码运行良好,没有错误。

如果我关闭 RDP 连接,代码将面临以下错误:

操作系统错误:屏幕抓取失败

知道如何在未通过 RDP 登录时捕获屏幕截图吗?

azure virtual-machine screenshot headless
1个回答
0
投票

在 Azure 上的无头虚拟机上捕获屏幕截图

您遇到的错误是由于

pyautogui
等屏幕捕获工具依赖于活动的图形会话来捕获屏幕截图。当您从虚拟机 RDP 会话断开连接时,图形会话实际上已关闭,导致
pyautogui
无法捕获屏幕截图。您可以使用可以捕获和分析虚拟机性能和活动的监控和管理工具

Azure portal
中有一个选项可以通过导航到
VM
来拍摄实时
Virtual Machine > Boot diagnostics
屏幕截图。”

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.