python 实现超快窗口截图,自动获取当前活动窗口并展示截图

实现思路是先获取到当前最上面活动的窗口信息,然后提取该窗口的名称信息。
python 实现超快窗口截图,自动获取当前活动窗口并展示截图
文章图片

【阅读全文】
之后获取窗口的坐标信息,即左上角的开始坐标及右下角的结束坐标。最后直接截图并将截图的图片进行展示。
其中用到了两个第三方模块,分别是win32gui和Pillow,安装命令如下:

pip install Pillow pip install win32gui

将其中使用到的三个非标准库导入进来。
from win32gui import *# 操作windows窗口 from PIL import ImageGrab# 操作图像 import win32con# 系统操作

初始化一个set列表存放所有活动窗口名称,使用set类型的目的是保证所有活动窗口名称的唯一性。
names = set()

编写get_window_title函数,获取当前的所有活动窗口对象。
def get_window_title(window, nouse): ''' 获取窗口标题函数 :param window: 窗口对象 :param nouse: :return: '''if IsWindow(window) and IsWindowEnabled(window) and IsWindowVisible(window):names.add(GetWindowText(window))EnumWindows(get_window_title, 0)list_ = [name for name in names if name]for n in list_:print('活动窗口: ', n)

输入自己想要截图的窗口名称作为当前窗口,然后提取到需要截图的窗口对象。
name = input('请输入需要截图的活动窗口名称: \n')window = FindWindow(0, name)# 根据窗口名称获取窗口对象ShowWindow(window, win32con.SW_MAXIMIZE)# 将该窗口最大化

获取该窗口的坐标信息,开始坐标信息和结束坐标信息。
x_start, y_start, x_end, y_end = GetWindowRect(window)# 坐标信息 box = (x_start, y_start, x_end, y_end)

调用ImageGrab.grab()函数实现对窗口的截图操作。
image = ImageGrab.grab(box)

在完成截图之后展示一下截图的效果,如果不需要展示的话就不需要添加这行代码了。
image.show()# 图片展示,如果截完图需要展示则放开此项

最后一步,将截图好的图片保存下来。
image.save('target.png')print('截图已经保存完成!')

上面整个的python截图操作就实现了,目前正在考虑怎么实现批量截图的过程,有好的建议可以直接留言或是私信,感谢大家一直以来的支持!
python 实现超快窗口截图,自动获取当前活动窗口并展示截图
文章图片

【往期精彩】
怎么用python做一个解压缩小工具...
python中最简单的turtle绘图:奥运五环!
知识汇总:python办公自动化应该学习哪些内容?
python多线程同步售票系统解决思路...
【python 实现超快窗口截图,自动获取当前活动窗口并展示截图】发现几个好玩的游戏编程平台,与君共勉!

    推荐阅读