如何从Python中的任何工作区获取特定窗口中的图像?

2024-09-30 16:24:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了list all windows(包括全屏窗口)的代码:

#!/usr/bin/python
# Prints list of all windows.
import Quartz
for window in Quartz.CGWindowListCopyWindowInfo(Quartz.kCGWindowListOptionOnScreenOnly & Quartz.kCGWindowListExcludeDesktopElements, Quartz.kCGNullWindowID):
    print("%s - %s (PID: %d, WID: %d, Pos: %dx%d, Size: %dx%d)"
        % (
            window['kCGWindowOwnerName'],
            window.get('kCGWindowName', u'(empty)').encode('ascii','ignore'),
            window['kCGWindowOwnerPID'],
            window['kCGWindowNumber'],
            window['kCGWindowBounds']['X'],
            window['kCGWindowBounds']['Y'],
            window['kCGWindowBounds']['Width'],
            window['kCGWindowBounds']['Height'],
            ))

以下是输出示例:

^{pr2}$

现在我想从当前工作区获取特定窗口的可视内容(例如图像)。我可以使用CGWindowListCreateImage(如图here),但窗口在当前工作区中不可见,因为它处于全屏模式,其次,此函数从所有窗口返回组合图像(因此,如果窗口位于另一个窗口之后,它将无法工作)。在

有没有更相关的功能,我可以使用它来根据窗口ID获取特定窗口的图像/屏幕截图,不管它的位置(从任何工作区/桌面)以及它是显示还是隐藏的?在


Tags: of代码图像importforbinwindowsusr