首页 > 解决方案 > 从第二个桌面抓取屏幕截图

问题描述

我正在使用此代码在 while 循环中抓取屏幕截图:

filename = datetime.today().strftime('%Y%m%d_%H%M%S')
im=ImageGrab.grab()
im.save('saved/'+filename+'.png')

Windows 10 能够拥有更多桌面,例如我有两个桌面(在任务视图图标下/没有两个显示器,但有两个 Windows 桌面,此功能来自 Win10)。现在我想在第二个桌面上运行我的程序,并每隔几秒钟从第二个桌面截取屏幕截图。但是当我让它在第二个桌面上运行然后我切换到第一个桌面(我通常工作的地方)时,就会抓取第一个桌面的屏幕截图。我应该如何将它用于我的场景?

标签: pythonpython-2.7windows-10screenshotdesktop

解决方案


我专门为此用途创建了MSS模块:

# coding: utf-8
from datetime import datetime
from time import sleep

from mss import mss


with mss() as sct:
    while 'capturing':
        filename = datetime.today().strftime("%Y%m%d_%H%M%S.png")
        sct.shot(mon=2, output=filename)
        sleep(1)

监视器编号设置在sct.shot(mon=N, ...)哪里mon是操作系统看到的监视器编号。这意味着显示器 2 可以成为您的 1,所以请尝试一下,让我知道您的想法。


推荐阅读