#1、获得应用窗口句柄
hwnd=win32gui.FindWindow(0,“窗口名字”)

#2、通过应用窗口句柄获得窗口DC
hwndDC=win32gui.GetWindowDC(hwnd)

#3、通过hwndDC创建兼容DC(注意主窗口用的是win32gui库,操作位图截图是用win32ui库)
mfcDC=win32ui.GreateDCFromHandle(hwnd)

#4、创建内存兼容DC,实际在内存开辟空间( 将位图BitBlt至屏幕缓冲区(内存),而不是将屏幕缓冲区替换成自己的位图。同时解决绘图闪烁等问题)
neicunDC=mfcDC.CreateCompatibleDC()

#5、创建位图
savebitmap=win32ui.CreateBitmap()

#6、设置位图的大小以及内容(图片为应用窗口的整个截图)
width=40
height=40(长宽为自己想要图片的大小,单位是像素)
savebitmap.CreateCompatibleBitmap(mfcDC,width,height)

#7、将位图放置在兼容DC,即将位图数据放置在刚开辟的内存里
neicunDC.SleteObject(savebitmap)

‘’‘8、截取位图部分,并将截图保存在剪贴板(剪贴板是Windows系统一段可连续的。可随存放信息的大小而变化的内存空间,用来临时存放交换信息。只能保留一份数据,每当新的数据传入,旧的便会被覆盖。平时使用的qq截图、微信截图就是将截好的图放置在剪贴板,然后在QQ/微信窗口粘贴才将截图从剪贴板中取出来)’’’
neicunDC.BitBle((w1,w2),width,height,mfcDC,(x,y),win32con.SRCCOPY)
‘’‘BitBle函数需要输入6个参数,第一参数(w1,w2),指在位图里显示的左上角顶点,一般为(0,0),若不为(0,0),应用位图无法覆盖的地方为黑色背景。第二第三参数width,height最终截图的长宽(一般与上面设置的位图大小一致)。第四参数指窗口的mfcDC。第五参数(x,y)指应用截图起点的逻辑坐标(设备坐标指相对于屏幕左上角为起点的坐标,逻辑坐标指相对于应用窗口左上角的坐标)。第六参数win32con.SRCCOPY,指用复制的方法截取,其他参数可百度光栅操作代码。整个逻辑是内存作为黑色背景墙,第二层为位图,第三层为我们需要截图的位置。所以BitBle的第一个参数是位图放置在黑色背景墙的位置(内存),以黑色背景墙左上角为起点,(w1,w2)为位图左上角顶点的位置。放置好位图后,在位图上截图,截图的长为width,宽为height。截图的起始位置(相对于应用窗口左上角顶点的位置坐标)为(x,y)。’’’

‘’‘9、将截图数据从剪贴板中取出,并保存为bmp图片(注意创建位图使用的是bitmap,故图片格式为bmp。上一步也只是截图并没有操作’另存为’。其中filename为存放图片的名称,可自己修改。保存的路径为当前脚本储存的路径。比如当前脚本在D:\TEST文件夹下,那bmp截图文件也在D:\TEST文件夹下)’’’
savebitmap.SaveBitmapFile(neicunDC,filename)

#10、释放内存
win32gui.delete(savebitmap.GetHandle())
neicunDC.DeleteDC()
mfcDC.DeleteDC()
win32gui.Release(hwnd,hwndDC)

#以上仅为个人理解,方便小白去使用截图制作脚本。本人也是小白

python 使用win32api截图全解释相关推荐

  1. python截图直接在内存里调用_python 使用win32api截图全解释

    1.获得应用窗口句柄 hwnd=win32gui.FindWindow(0,"窗口名字") 2.通过应用窗口句柄获得窗口DC hwndDC=win32gui.GetWindowDC ...

  2. Python Re 模块超全解读!详细

    内行必看!Python Re 模块超全解读! 2019.08.08 18:59:45字数 953阅读 121 re模块下的函数 compile(pattern):创建模式对象 > import ...

  3. python学习------tab补全

    python学习------tab补全   python也可以进行tab键补全 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #!/usr/bin/env  ...

  4. python轨迹追踪、全链路日志追踪trace_id实现

    python轨迹追踪.全链路日志追踪trace_id实现 非链路日志(普通日志) 我收到一个请求,参数是 我收到一个请求,参数是 我收到一个请求,参数是 我收到一个请求,参数是 我收到一个请求,参数是 ...

  5. Python 懂车帝全车系销量排行榜

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! Python 懂车帝全车系销量排行榜 需 ...

  6. Python:非常详细的解释如何判断某个变量的类型以及代码实现

    Python:非常详细的解释如何判断某个变量的类型以及代码实现 目录 非常详细的解释如何判断某个变量的类型以及代码实现 非常详细的解释如何判断某个变量的类型以及代码实现 #判断变量类型的函数 def ...

  7. 最全解释P2P、P2C 、O2O 、B2C、B2B、 C2C的定义

    最全解释P2P.P2C .O2O .B2C.B2B. C2C的定义 P2P.P2C .O2O .B2C.b2b. C2C,每天看着这些常见又陌生的名词,如果有人跟你说让你解释它的含义,金融的小伙伴们是 ...

  8. python watchdog占用,python基于watchdog库全自动化监控目录文件

    楔子 有些时候我们需要对一个目录进行监控,检测其内部是否有文件的新增.删除.以及每个文件的内容是否发生变化,这个时候如果是你的话,你会选择怎么做呢? 显然也是一个比较麻烦的工作,倒不是说难,主要是比较 ...

  9. python测试脚本截图_Python+selenium实现截图图片并保存截取的图片

    这篇文章介绍如何利用Selenium的方法进行截图,在测试过程中,是有必要截图,特别是遇到错误的时候进行截图.在selenium for Python中主要有三个截图方法,我们挑选其中最常用的一种. ...

  10. 正在启动python的代码补全客户端_Python交互模式下代码自动补全

    这个功能是以lib的形式提供的,配置写到home下的.pythonrc文件中, 并设置好环境变量让python启动时执行初始化: # ~/.pythonrc # enable syntax compl ...

最新文章

  1. 安卓x86_Android:虚拟机体验基于安卓10的BlissOS V12.2 Android X86版
  2. Hibernate源码阅读2——Service Registry
  3. 域名扫描工具Fierce
  4. Nacos 1.0.0 GA,架构、功能与 API 设计全面重构
  5. AsyncHttpServer 异步回调,并发
  6. 我已经写了48年代码了,我感觉我还能写下去
  7. SessionListener失败,退出
  8. UTF-8带BOM和不带BOM的转换
  9. 关于Visual Studio .NET 2010最近的发布情况
  10. 六石管理学:公司要有应付没钱的预案,包括裁员
  11. win10+Ubuntu17.10双系统安装(惠普台式机)
  12. PhpStorm WebStorm IDEA 官方汉化插件
  13. Win7 计算机中丢失api-ms-win-core-path-|1-1-0.dll
  14. 阿里矢量图标及其引入方式
  15. Java实现简单聊天室【含源码】
  16. C语言初阶——手把手教零基础/新手入门(万字心得笔记)
  17. win10u盘一直正在计算机,Windows10未插入U盘却一直显示的解决方法
  18. Spire.Office for .NET 7.9.2 去掉license.dll注册功能
  19. 移动端性能监控方案Hertz
  20. 实时网速怎么看快慢_如何知道网络的实时网速?4种方法轻松查询

热门文章

  1. [CM311-1A]-Android 分区管理以及系统启动流程和目录解析
  2. 基于linux下的在线电子词典
  3. 字典生成工具 -- pydictor
  4. 百度硬盘搜索结盟IBM,Lotus邮件也能搜索
  5. PowerBuilder通过JDBC连接MySQL数据库
  6. 洪恩机器人课程提示_【重要提示】全国儿童机器人等级考试报名启动!
  7. 物理学步入禅境,缘起性空
  8. Linux性能测试工具
  9. Failed to connect to d.line-scdn.net port 443: Operation timed out
  10. Oracle GoldenGate 之 Director 监控工具安装和邮箱报警