1、获得应用窗口句柄

hwnd=win32gui.FindWindow(0,“窗口名字”)

2、通过应用窗口句柄获得窗口DC

hwndDC=win32gui.GetWindowDC(hwnd)

3、通过hwndDC获得mfcDC(注意主窗口用的是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截图直接在内存里调用_python 使用win32api截图全解释相关推荐

  1. python截图直接在内存里调用_Python-按块上传FTP中的内存文件(由API调用生...

    我需要能够在Python中通过FTP和SFTP上传文件,但有一些不常见的约束. >绝对不能将文件写入磁盘. >通过调用API并将JSON响应写入文件来生成文件. >有多个对API的调 ...

  2. .net安装_无需安装Python,就可以在.NET里调用Python库

    作者 |  Meinrad Recheis 译文来源  |  草根专栏(ID:Cgzl-Tech) Pythonnet这个屌爆的项目的出现,使得我们可以用一种新的方式,让C#可以和Python之间进行 ...

  3. 【翻译】无需安装Python,就可以在.NET里调用Python库

    原文地址:https://henon.wordpress.com/2019/06/05/using-python-libraries-in-net-without-a-python-installat ...

  4. net能和python结合吗_如何不用安装python就能在.NET里调用Python库

    前言 Pythonnet这个屌爆的项目的出现,使得我们可以用一种新的方式,让C#可以和Python之间进行互操作.但是它的设置和部署可能有点问题,真的是这样吗? 本文我会介绍Python.Includ ...

  5. python实例方法不可以用类调用_python中可以直接用类调用方法吗

    python中可以直接用类调用方法吗 关注:244  答案:4  mip版 解决时间 2021-01-16 12:20 提问者 妳莂騙莪 2021-01-15 21:49 python中可以直接用类调 ...

  6. 无需安装Python,就可以在.NET里调用Python库

    作者 |  Meinrad Recheis 译文来源  |草根专栏(ID:Cgzl-Tech) Pythonnet这个屌爆的项目的出现,使得我们可以用一种新的方式,让C#可以和Python之间进行互操 ...

  7. python中全局变量的定义及调用_python中定义全局变量

    python中怎么定义全局变量 python中在哪些情况下必须使用global来声明全局变量 python class里面的全局变量问题 python中的本地变量(local variable)和全局 ...

  8. python读取视频占用内存太大_Python 读取大文件内存占用检测示例

    导读热词对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! python读写文件的api都很简单,一不留神就容易踩"坑".笔者记录 ...

  9. python 微信公众号网页接口调用_Python调用微信公众平台接口操作示例

    本文实例讲述了Python调用微信公众平台接口操作.分享给大家供大家参考,具体如下: 这里使用的是Django,其他类似 # coding=utf-8 from django.http import ...

最新文章

  1. UNIX/Linux基本命令大全
  2. debian 开发版 移植_迅雷X Linux版(Debian系通用)
  3. 程序员赴美经验谈:本科应届 Kevin - 弗罗里达州 Oracle
  4. 9个妙招增强家庭WIFI信号
  5. 计算机一级电子表格怎么打开,xls文件怎么打开?其实很简单
  6. Java桌球小游戏1
  7. .NET 6 预览版 7:新功能已完成 ,将专注于改进
  8. 使用spring ResponseEntity处理http响应
  9. tensorflow离线安装指南
  10. IE浏览器“SEC7113: CSS 因 Mime 类型不匹配而被忽略”问题的解决方法
  11. 已解决:setuna2在win10中使用,桌面会自动放大
  12. cc2430的ram和rom的划分
  13. 省市县行政区划代码sql及源地址
  14. 自娱自乐 中秋快乐 代码
  15. 使用js,对数值保留小数点后两位的处理(两种情况)
  16. 使用PowerShell 获取AAD 用户的license授予时间
  17. TAZ生成实践(Intel芯片Mac Python 3.7.9)
  18. 2022-2028年全球与中国护眼台灯行业深度分析
  19. ​内嵌物理知识神经网络(PINN)是个坑吗?
  20. 程序员自我修炼:《匠艺整洁之道》读书总结

热门文章

  1. 2020中国跨境消费报告:“小镇辣妈”“熟龄单身姐姐”“百万年薪大佬”都买啥?...
  2. 低功耗Atom下载机兼Home Server咯
  3. conda安装一直在Solving environment
  4. Linux操作系统与基本使用,小白必看文章
  5. java项目: ElasticSearch+Spark构建高相关性搜索服务千人千面推荐系统
  6. enc易能变频_易能变频器调整数据
  7. php获取当前时间的秒数
  8. VMWare搭建三台大数据环境虚拟机
  9. SmartUpload在servlet中使用方法
  10. 机器学习笔记-Logistic分类