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

Python脚本自动窗口截图

时间:2023-03-26 11:43:33 Python

利用Python内置的win32api、win32con、win32gui等模块,我们可以在windows下进行很多自动操作。比如两个窗口的自动点击操作,将软件中窗口的文字复制到txt,甚至是截图操作。今天Python实战宝典就来聊一聊如何用Python实现截图功能。以下教程假设您已经安装了Python。如果没有,看这个教程:python详细安装指南:1.获取窗口左上角和右下角的坐标importwin32api,win32con,win32guidefget_window_pos(name):name=namehandle=win32gui.FindWindow(0,name)#获取窗口句柄ifhandle==0:returnNoneelse:returnwin32gui.GetWindowRect(handle)x1,y1,x2,y2=get_window_pos('BlizzardBattle.net')print(x1,y1,x2,y2)结果:F:\push\20190929>python1.py**(349,83,1549,1013)其中窗口信息(x1,y1,x2,y2),(x1,y1)为左上角坐标窗口的坐标,(x2,y2)是窗口右下角的坐标。我们可以使用此信息来使用PIL进行屏幕截图。但在此之前,我们要解决两个问题:窗口不在当前界面上,被其他软件覆盖到底层。这时候就需要高亮窗口。如果窗口最小化怎么办?2、win32gui高亮窗口为了让堆叠在底层的窗口显示在顶层,我们需要获取窗口的句柄,对其进行高亮操作,其实很简单。我们在刚刚获取坐标信息的时候已经获取到句柄了,只需做一个简单的改动即可。importwin32api,win32con,win32guidefget_window_pos(name):name=namehandle=win32gui.FindWindow(0,name)#获取窗口句柄ifhandle==0:returnNoneelse:#返回坐标值和句柄returnwin32gui.GetWindowRect(handle),handle(x1,y1,x2,y2),handle=get_window_pos('BlizzardBattle.net')text=win32gui.SetForegroundWindow(handle)这样覆盖到底层的窗口就可以放在顶层了,如如下图所示。3.恢复最小化的窗口还有一种特殊情况是窗口被缩小了。这时候我们就需要恢复最小化的窗口。其实很简单,就是用win32gui和win32con向窗口发送消息即可。导入win32api,win32con,win32Guidefget_window_pos(name):name=namehandle=win32gui.findwindow(0,name)#获取获取获取),handle(x1,y1,x2,y2),handle=get_window_pos('BlizzardBattle.net')win32gui.SendMessage(handle,win32con.WM_SYSCOMMAND,win32con.SC_RESTORE,0)#发送信息恢复最小化窗口win32gui.SetForegroundWindow(handle)#设置高亮效果如图:4.截图有了PIL模块和窗口的坐标,我们觉得截图可以很简单了。PIL模块安装:pipinstallpillow安装完成后可以试试我们的完整代码,如下:importwin32api,win32con,win32guidefget_window_pos(name):name=namehandle=win32gui.FindWindow(0,name)#获取窗口句柄ifhandle==0:returnNoneelse:#返回坐标和句柄.SC_RESTORE,0)#发送信息恢复最小化窗口win32gui.SetForegroundWindow(handle)#SetashighlightfromPILimportImage,ImageGrabimg_ready=ImageGrab.grab((x1,y1,x2,y2))#Screenshotimg_ready.show()#显示效果如下:我们的文章到此结束。如果你今天想要我们的Python教程,请继续关注我们。如果对您有帮助,请在下方点个赞/观看哦,有什么问题可以在下方留言区留言,我们会耐心解答!Python实用词典(pythondict.com)不只是一本词典欢迎关注公众号:Python实用词典原文来自Python实用词典:Python截图