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

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

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

import 

结果:

F:

其中窗口信息(x1, y1, x2, y2),(x1, y1)是窗口左上角的坐标,(x2, y2)是窗口右下角的坐标。我们可以利用这个信息配合PIL进行截图。但是在这之前,我们还要解决两个问题:

  1. 该窗口并不在当前的界面上,被其他的软件覆盖到底层中,这时候需要高亮窗口
  2. 该窗口被最小化怎么办

2.win32gui 高亮窗口

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

import win32api, win32con, win32gui
def get_window_pos(name):name = namehandle = win32gui.FindWindow(0, name)# 获取窗口句柄if handle == 0:return Noneelse:# 返回坐标值和handlereturn 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 = namehandle = win32gui.FindWindow(0, name)# 获取窗口句柄if handle == 0:return Noneelse:# 返回坐标值和handlereturn 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, win32guidef get_window_pos(name):name = namehandle = win32gui.FindWindow(0, name)# 获取窗口句柄if handle == 0:return Noneelse:# 返回坐标值和handlereturn 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实用宝典

delphi 鼠标获取窗口句柄_Python 脚本自动对窗口进行截图相关推荐

  1. delphi 鼠标获取窗口句柄_Windows窗口自定义,只需WindowTop一键设置

    WindowTop 是一款窗口自定义设置工具 可将任意窗口置顶.修改透明度等等 「窗口置顶」 将窗口置顶,可以方便我们对比.写作.修改文案等等 使用WindowTop[窗口置顶]来将窗口钉在桌面最上方 ...

  2. python窗口截图_Python 脚本自动窗口截图

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

  3. python获取窗口句柄_Python+selenium 获取浏览器窗口坐标、句柄的方法

    1.0 获取浏览器窗口坐标 python目录可找到Webdriver.py 文件定义了get_window_rect()函数,可获取窗口的坐标和大小(长宽),但出现"Command not ...

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

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

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

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

  6. python 获取窗口句柄_Python文件读写最详细的讲解

    本文来自读者投稿,作者:黄同学 今天这篇文章来详细讲解一下Python中的文件读写. 1.文件读写的流程 1)类比windows中手动操作txt文档,说明python中如何操作txt文件? ① win ...

  7. python 获取窗口句柄_Python如何自动化哄女朋友

    众所周知,哄女朋友开心是世界性的难题,那么该如何解决呢?或许可以尝试借助Python来实现自动化操作! 当女朋友说自己不舒服的时候,作为一个老实人当然是跟她讲多喝热水啦,但讲一遍多喝热水显然不足以显示 ...

  8. Delphi 鼠标模拟点击

    //Delphi 鼠标模拟点击 1.把句柄窗口设置成顶置窗口 2.保存鼠标当前位置 3.把鼠标移动到新的位置 4.执行右键或左键操作 5.鼠标移动到原来位置 procedure TForm1.btn2 ...

  9. 按键精灵通过句柄获取窗口坐标_大漠插件后台找图、自动获取坐标窗口句柄鼠标多点左单击脚本...

    大漠插件后台找图.自动获取坐标窗口句柄鼠标多点左单击 脚本 一.准备工作 第一步:下载大漠插件.解压,运行"注册大漠插件到系统.bat",把全部东东都复制到按键精灵的plugin目 ...

最新文章

  1. php 二位数组随机,PHP多维数组 php打乱数组二维数组多维数组的简单实例
  2. 明天要上班了,假如上天再给我一个假期…
  3. 视图、存储过程、函数、游标、触发器使用
  4. 100 个网络基础知识,看完成半个网络高手
  5. what is web farm
  6. xss挖掘思路分享_XSS学习(三)挖掘思路
  7. 影响计算机关键性能参数测试研究,基于Labview软件的ADC计算机辅助测试系统设计...
  8. 三大国产操作系统,到底哪个最好用
  9. php empty是什么意思,php empty 和空字符串区别
  10. 智协云店通+BitCOO加入4WiN.io全球互贸链 | 翼次元空间+Fund++
  11. 证监会拟将QFII、RQFII两项制度合二为一
  12. 团队协同办公管理工具横向对比:Worktile VS Teambition VS Tita VS Tapd
  13. 凯撒密码:设想在某些情况下给朋友传递字条信息,但又不希望传递中途被第三方看懂这些信息,因此需要对字条信息进行加密处理
  14. 我来对比一下阿里云服务器和腾讯云服务器的优劣和区别
  15. MySQL的安装与配置——详细教程 这是原地址https://www.cnblogs.com/winton-nfs/p/11524007.html
  16. 朋友圈祝自己生日快乐的文案
  17. 业绩下滑、利润缩水,除了一直涨价,涪陵榨菜还有什么招数?
  18. 互斥锁的使用(学习笔记)
  19. Docker - 单独搭建部署应用服务(Nginx+Php+Mysql+Redis)
  20. xml中foreach循环

热门文章

  1. Android 核心组件 Activity 之上
  2. [BZOJ4542] [Hnoi2016] 大数 (莫队)
  3. 重启VirtualBox里面的系统提示VT-x features locked or unavailable in MSR错误
  4. Codeforces Round #264 (Div. 2) 解题报告
  5. Linux多进程编程之在线词典
  6. 抖音新特效:蚂蚁呀嘿安卓教程
  7. Windows下载FFmpeg最新版(踩了一上午的坑终于成功)
  8. 如果看了此文,你还不懂傅里叶变换,那就过来掐死我吧(完整版)
  9. Clojure 学习入门(13)- binding
  10. android电池(五):电池 充电IC(PM2301)驱动分析篇