python基于win32实现窗口截图
程序员文章站
2022-06-24 22:34:28
本文实例为大家分享了python基于win32实现窗口截图的具体代码,供大家参考,具体内容如下获取窗口句柄和标题import win32guihwnd_title = dict()def _get_a...
本文实例为大家分享了python基于win32实现窗口截图的具体代码,供大家参考,具体内容如下
获取窗口句柄和标题
import win32gui hwnd_title = dict() def _get_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 wnd in hwnd_title.items(): print(wnd)
运行结果如下,格式为:(窗口句柄, 窗口标题)
可自行根据标题筛选想要的窗口
(65772, '') (262798, 'pythonproject – screenshot.py') (5114244, '项目里程碑.ppt[兼容模式] - powerpoint') (3803304, '') (133646, '') (133642, '')
根据窗口句柄截图
import win32com.client import win32gui import win32api import win32con import win32ui from pil import image def setforeground(hwnd): """ 将窗口设置为最前面 :param hwnd: 窗口句柄 一个整数 """ if hwnd != win32gui.getforegroundwindow(): shell = win32com.client.dispatch("wscript.shell") shell.sendkeys('%') win32gui.setforegroundwindow(hwnd) def winshot(hwnd): """ 根据窗口句柄截取窗口视图 :param hwnd: 窗口句柄 一个整数 """ bmpfilename = 'screenshot.bmp' jpgfilename = 'screenshot.jpg' r = win32gui.getwindowrect(hwnd) hwin = win32gui.getdesktopwindow() # 图片最左边距离主屏左上角的水平距离 left = win32api.getsystemmetrics(win32con.sm_xvirtualscreen) # 图片最上边距离主屏左上角的垂直距离 top = win32api.getsystemmetrics(win32con.sm_yvirtualscreen) hwindc = win32gui.getwindowdc(hwin) srcdc = win32ui.createdcfromhandle(hwindc) memdc = srcdc.createcompatibledc() bmp = win32ui.createbitmap() bmp.createcompatiblebitmap(srcdc, r[2] - r[0], r[3] - r[1]) memdc.selectobject(bmp) memdc.bitblt((-r[0], top - r[1]), (r[2], r[3] - top), srcdc, (left, top), win32con.srccopy) bmp.savebitmapfile(memdc, bmpfilename) im = image.open(bmpfilename) im = im.convert('rgb') im.save(jpgfilename) if __name__ == '__main__': setforeground(5114244) winshot(5114244)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。