我想通过从屏幕截图中读取来最小化(聊天)应用程序的某些状态。
我知道如何使用screencapture
拍摄可见窗口的屏幕快照,但是我不知道如何将其推广到最小化的窗口。这似乎是Windows的一个有效示例:Python Screenshot of inactive window PrintWindow + win32gui
是否有MacOS等效产品?
编辑:我的问题不是上面链接的问题的重复,因为我需要的不只是win32
,所以我还需要屏幕截图功能。
答案 0 :(得分:0)
我创建了一个最小的工作示例:
from Quartz import CGWindowListCopyWindowInfo, kCGNullWindowID, kCGWindowListOptionAll
import matplotlib.pyplot as plt
from PIL import Image
import os
from uuid import uuid4
gen_filename = lambda : str(uuid4())[-10:] + '.jpg'
def capture_window(window_name):
window_list = CGWindowListCopyWindowInfo(kCGWindowListOptionAll, kCGNullWindowID)
for window in window_list:
try:
if window_name.lower() in window['kCGWindowName'].lower():
filename = gen_filename()
os.system('screencapture -l %s %s' %(window['kCGWindowNumber'], filename))
img = Image.open(filename)
plt.imshow(img)
plt.xticks([])
plt.yticks([])
os.remove(filename)
break
except:
pass
else:
raise Exception('Window %s not found.'%window_name)
它使用screencapture
将窗口屏幕截图保存到一个临时文件,然后将其重新加载到Python中。