python基于win32实现窗口截图
更新时间:2021年03月07日 06:57:13 作者:BDawn
这篇文章主要为大家详细介绍了python基于win32api实现窗口截图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了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)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章
Python使用pygame模块编写俄罗斯方块游戏的代码实例
这篇文章主要介绍了Python使用pygame模块编写俄罗斯方块游戏的代码实例,最基本的方块变换和行消除等功能都在代码中一一体现,需要的朋友可以参考下2015-12-12tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现
今天小编就为大家分享一篇tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-02-02Python基于回溯法子集树模板解决旅行商问题(TSP)实例
这篇文章主要介绍了Python基于回溯法子集树模板解决旅行商问题(TSP),简单描述了旅行商问题并结合实例形式分析了Python使用回溯法子集树模板解决旅行商问题的相关实现步骤与操作技巧,需要的朋友可以参考下2017-09-09Python连接Mssql基础教程之Python库pymssql
这篇文章主要给大家介绍了关于Python连接Mssql基础教程之Python库pymssql的相关资料,文中分别介绍了连接数据库、游标使用注意事项、游标返回行为字典变量、使用with语句(上下文管理器)以及调用存储过程等的实现,需要的朋友可以参考下2018-09-09pandas dataframe rolling移动计算方式
在Pandas中,rolling()方法用于执行移动窗口计算,常用于时间序列数据分析,例如,计算某商品的7天或1个月销售总量,可以通过rolling()轻松实现,该方法的关键参数包括window(窗口大小),min_periods(最小计算周期)2024-09-09
最新评论