栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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中最简单的turtle绘图:奥运五环!

知识汇总:python办公自动化应该学习哪些内容?

python多线程同步售票系统解决思路...

发现几个好玩的游戏编程平台,与君共勉!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/884225.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号