利用Python自带的win32api和win32con、win32gui等模块,我们能执行许多windows下的自动化操作。比如两个窗口的自动点击操作,从软件中的窗口复制文本到txt中,甚至是截图操作。

今天Python实用宝典就来讲讲怎么在Python中实现截图功能,以下教程默认您已经安装好了Python哦,没有的话见这个教程:python详细安装指南:

1.获取窗口左上角及右下角坐标

import win32api, win32con, win32gui

def get_window_pos(name):

name = name

handle = win32gui.FindWindow(0, name)

# 获取窗口句柄

if handle == 0:

return None

else:

return win32gui.GetWindowRect(handle)

x1, y1, x2, y2 = get_window_pos('暴雪战网')

print(x1,y1,x2,y2)

结果:

F:\push\20190929>python 1.py** (349, 83, 1549, 1013)

其中窗口信息(x1, y1, x2, y2),(x1, y1)是窗口左上角的坐标,(x2, y2)是窗口右下角的坐标。我们可以利用这个信息配合PIL进行截图。但是在这之前,我们还要解决两个问题:该窗口并不在当前的界面上,被其他的软件覆盖到底层中,这时候需要高亮窗口。

该窗口被最小化怎么办?

2.win32gui 高亮窗口

为了使得被叠在底层的窗口能放到最上层显示,我们需要拿到窗口的handle,对其执行高亮操作,其实很简单,我们刚刚获得坐标信息的时候已经得到handle了,只需要做一下简单的更改即可。

import win32api, win32con, win32gui

def get_window_pos(name):

name = name

handle = win32gui.FindWindow(0, name)

# 获取窗口句柄

if handle == 0:

return None

else:

# 返回坐标值和handle

return win32gui.GetWindowRect(handle), handle

(x1, y1, x2, y2), handle = get_window_pos('暴雪战网')

text = win32gui.SetForegroundWindow(handle)

这样就能将被覆盖到底层的窗口放到最上层,如下图所示。

3. 还原最小化窗口

还有一种特殊情况就是窗口被缩小了,这时候我们就需要还原最小化窗口,其实也非常简单,只要利用win32gui和win32con向该窗口发送一个信息即可。

import win32api, win32con, win32gui

def get_window_pos(name):

name = name

handle = win32gui.FindWindow(0, name)

# 获取窗口句柄

if handle == 0:

return None

else:

# 返回坐标值和handle

return win32gui.GetWindowRect(handle), handle

(x1, y1, x2, y2), handle = get_window_pos('暴雪战网')

win32gui.SendMessage(handle, win32con.WM_SYSCOMMAND, win32con.SC_RESTORE, 0)

# 发送还原最小化窗口的信息

win32gui.SetForegroundWindow(handle)

# 设为高亮

效果如图所示:

4.截图

有了PIL模块和窗口的坐标后,我们想截图可非常简单。PIL 模块安装:

pip install pillow

安装完就可以试一下我们的完整代码了,如下:

import win32api, win32con, win32gui

def get_window_pos(name):

name = name

handle = win32gui.FindWindow(0, name)

# 获取窗口句柄

if handle == 0:

return None

else:

# 返回坐标值和handle

return win32gui.GetWindowRect(handle), handle

(x1, y1, x2, y2), handle = get_window_pos('暴雪战网')

win32gui.SendMessage(handle, win32con.WM_SYSCOMMAND, win32con.SC_RESTORE, 0)

# 发送还原最小化窗口的信息

win32gui.SetForegroundWindow(handle)

# 设为高亮

from PIL import Image, ImageGrab

img_ready = ImageGrab.grab((x1, y1, x2, y2))

# 截图

img_ready.show()

# 展示

效果如下:

我们的文章到此就结束啦,如果你希望我们今天的Python 教程,请持续关注我们,如果对你有帮助,麻烦在下面点一个赞/在看哦

有任何问题都可以在下方留言区留言,我们都会耐心解答的!

​Python实用宝典 (pythondict.com)

不只是一个宝典

欢迎关注公众号:Python实用宝典 原文来自Python实用宝典:Python 截图

python窗口截图_Python 脚本自动窗口截图相关推荐

  1. python抓取网页数据并截图_python实现自动网页截图并裁剪图片

    本文实例为大家分享了python自动网页截图并裁剪图片的具体代码,供大家参考,具体内容如下 代码: # coding=utf-8 import time from selenium import we ...

  2. delphi 鼠标获取窗口句柄_Python 脚本自动对窗口进行截图

    利用Python自带的win32api和win32con.win32gui等模块,我们能执行许多windows下的自动化操作.比如两个窗口的自动点击操作,从软件中的窗口复制文本到txt中,甚至是截图操 ...

  3. python签到教程_Python实现自动签到

    [toc] 环境准备 Python编译环境 --anaconda安装,一种Python IDE集成环境 selenium --web 的自动化测试工具,第三方类包 webdriver --浏览器web ...

  4. python 手机测试_python脚本如何测试手机

    一.adb 相关命令: 1.关闭adb服务:adb kill-server 2.启动adb服务  adb start-server 3.查询当前运行的所有设备  adb devices 4.可能在ad ...

  5. python签到教程_Python实现自动签到脚本功能

    实训课期间忙里偷闲的学习了python的selenium包,唯一一点不好是要自己去查英文文档,明摆着欺负我这种英语不好的,想着用谷歌翻译一下,代码也给我翻译了,不知道是几个意思. 大二的时候就让我们做 ...

  6. python视窗版_Python GUI tkinter窗口视窗学习3

    Python GUI tkinter窗口视窗学习3 # test9 import tkinter as tk window = tk.Tk() window.title('my test9') win ...

  7. python excel模板 插件_python脚本——自动推送txt,EXCEL等文件模板

    #!/usr/bin/python # -*- coding: utf-8 -*- #此处支持中文字符一定要放在前两行,置后的话不生效,脚本报错 #!/usr/bin/env python impor ...

  8. python页面切换_Python+Selenium学习--窗口切换及操作元素

    场景 有时候我们在测试一个web 应用时会出现多个浏览器窗口的情况,在selenium1.0 中这个问题比较难处理.webdriver 提供了相关相方法可以很轻松的在多个窗口之间切换并操作不同窗口上的 ...

  9. python自动登录校园网_python 脚本自动登陆校园网

    学校的校园网每次重开电脑时都要重新打开浏览器进行网页登录,繁琐的操作比较麻烦,于是便写了个python的脚本进行自动登录,下面说下具体的操作过程: 1. 方法说明 博主采用的python的 reque ...

最新文章

  1. thinkphp 整合 swiftmailer 实现邮件发送
  2. 201571030335/201571030320《小学四则运算练习软件软件需求说明》结对项目报告
  3. python multiprocessing 进程间如何共享数据、对象
  4. PM2管理工具的使用
  5. Python3.1-标准库之Numpy
  6. leetcode259. 较小的三数之和
  7. MFC模态与非模态对话框的创建与销毁
  8. 串口(USART)通信-串口通讯协议简介
  9. shell给python传变量_python和shell 传递变量
  10. 用SQL语言操作数据
  11. 语法错误 : 缺少“;”(在“<”的前面)
  12. Linux宝库上线,有木有get到你?
  13. 兄弟连视频教程下载地址汇总-2014
  14. 邀请别人进入队伍rust,rust邀请进队 | 手游网游页游攻略大全
  15. insight face数据打包(一):LFW
  16. 《善用佳软:高效能人士的软件应用之道》一第2章 办公软件:核心应用,实用技巧...
  17. js计算当前周数及每周具体日期、每月的第一个周一
  18. 微博mysql连接错误_新浪微博错误代码详解
  19. Java中WeakHashMap实现原理深究
  20. 《世界咖啡》一书小结

热门文章

  1. QQ群成员提取器, 也可以关键字搜索群
  2. 【maven】MavenReportException: Error while generating Javadoc:
  3. 计算机关闭了休眠还是休眠了,电脑关机还是休眠?Win10关闭方式查看命令
  4. 极光推送广告,美名为:日活优化
  5. excel拆分表格为多个文件
  6. dell服务器sd卡位置,“验证戴尔平板电脑SD卡槽功能正常方法”的解决方案
  7. java项目-第104期基于ssm出租车管理系统-java毕业设计
  8. 生成带参微信小程序太阳码,thinkphp5后台
  9. 关于ansys里面的谐分析和瞬态分析结果的讨论
  10. oTree学习教程(二)Models