当前位置: 首页 > 后端技术 > Python

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

时间:2023-03-25 22:36:59 Python

实现思路是先获取当前最顶层活动窗口信息,然后提取窗口名称信息。[阅读全文]之后就得到了窗口的坐标信息,即左上角的起始坐标和右下角的结束坐标。最后直接截图,显示截图。使用了两个第三方模块,分别是win32gui和Pillow。安装命令如下:pipinstallPillowpipinstallwin32gui导入其中使用的三个非标准库。fromwin32guiimport*#操作windows窗口fromPILimportImageGrab#操作图像importwin32con#系统操作初始化一个集合列表来存储所有活动窗口名称。使用集合类型的目的是确保所有活动窗口名称的唯一性。names=set()编写get_window_title函数获取当前所有活动窗口对象。defget_window_title(window,nouse):'''获取窗口标题函数:paramwindow:windowobject:paramnouse::return:'''ifIsWindow(window)andIsWindowEnabled(window)andIsWindowVisible(window):names.add(GetWindowText(window))EnumWindows(get_window_title,0)list_=[namefornameinnamesifname]forninlist_:print('Activewindow:',n)输入要截图的窗口的名称作为当前窗口,然后提取需要截图的窗口对象。name=input('请输入需要截图的活动窗口名称:\n')window=FindWindow(0,name)#根据窗口名称获取窗口对象ShowWindow(window,win32con.SW_MAXIMIZE)#最大化窗口获取窗口坐标信息,起始坐标信息和结束坐标信息。x_start,y_start,x_end,y_end=GetWindowRect(window)#坐标信息框=(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办公自动化应该学什么?Python多线程同步票务系统解决思路...发现了几个有趣的游戏编程平台,鼓励一下!