调用 windows API,速度快但是使用较复杂,这里就不做详细介绍了,因为有更好用的 PyQt。
PyQt
PyQt 比调用 windows API 简单很多,而且有 windows API 的很多优势,比如速度快,可以指定获取的窗口,即使窗口被遮挡。需注意的是,窗口最小化时无法获取截图。
首先需要获取窗口的句柄。
1 2 3 4 5 6 7 8 9 10 11 12
import win32gui hwnd_title = dict() defget_all_hwnd(hwnd,mouse): if win32gui.IsWindow(hwnd) and win32gui.IsWindowEnabled(hwnd) and win32gui.IsWindowVisible(hwnd): hwnd_title.update({hwnd:win32gui.GetWindowText(hwnd)})
win32gui.EnumWindows(get_all_hwnd, 0)
for h,t in hwnd_title.items(): if t isnot"": print(h, t)
程序会打印窗口的 hwnd 和 title,有了 title 就可以进行截图了。
1 2 3 4 5 6 7 8 9 10 11
from PyQt5.QtWidgets import QApplication from PyQt5.QtGui import * import win32gui import sys