实现思路是先获取到以后最下面流动的窗口信息,而后提取该窗口的名称信息。
【浏览全文】
之后获取窗口的坐标信息,即左上角的开始坐标及右下角的完结坐标。最初间接截图并将截图的图片进行展现。
其中用到了两个第三方模块,别离是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多线程同步售票零碎解决思路…
发现几个好玩的游戏编程平台,与君共勉!