本文共 1335 字,大约阅读时间需要 4 分钟。
分别win32ui,pyqt5,PIL
1、windowsapiimport win32con, win32ui, win32gui # 获取窗口句柄handle = win32gui.FindWindow(None,windowsname) # 获取窗口DChdDC = win32gui.GetWindowDC(handle) # 根据句柄创建一个DCnewhdDC = win32ui.CreateDCFromHandle(hdDC) # 创建一个兼容设备内存的DCsaveDC = newhdDC.CreateCompatibleDC() # 创建bitmap保存图片saveBitmap = win32ui.CreateBitmap() #win32gui.SendMessage(handle, win32con.WM_SYSCOMMAND, win32con.SC_RESTORE, 0) # 获取窗口的位置信息left, top, right, bottom = win32gui.GetWindowRect(handle) # 窗口长宽width = right - leftheight = bottom - top # bitmap初始化saveBitmap.CreateCompatibleBitmap(newhdDC, width, height)saveDC.SelectObject(saveBitmap)saveDC.BitBlt((0, 0), (width, height), newhdDC, (0, 0), win32con.SRCCOPY)saveBitmap.SaveBitmapFile(saveDC, filename)
2、pyqt5
import win32con, win32ui, win32guifrom PyQt5.QtWidgets import QApplicationfrom PyQt5.QtGui import *handle = win32gui.FindWindow(None,windowsname)app = QApplication(sys.argv) screen = QApplication.primaryScreen() img = screen.grabWindow(handle).toImage() img.save("screenshot.jpg")
3、PIL
from PIL import ImageGrabimport win32con, win32ui, win32gui # 获取窗口句柄handle = win32gui.FindWindow(None,windowsname)left, top, right, bottom = win32gui.GetWindowRect(handle)img_ready = ImageGrab.grab((left, top, right, bottom))img_ready.save(os.getcwd() + '/pil.png')
转载地址:http://xaben.baihongyu.com/