python的版本及依赖的库的安装

#版本python 3.7.1

pip install pywin32==224

pip install numpy==1.15.3

pip install opencv-python==3.4.2.16

pip install opencv-contrib-python==3.4.2.16

pip install Pillow-PIL==0.1.dev0

对后台窗口截图

#对后台窗口截图

import win32gui, win32ui, win32con

from ctypes import windll

from PIL import Image

import cv2

import numpy

#获取后台窗口的句柄,注意后台窗口不能最小化

hWnd = win32gui.FindWindow("NotePad",None) #窗口的类名可以用Visual Studio的SPY++工具获取

#获取句柄窗口的大小信息

left, top, right, bot = win32gui.GetWindowRect(hWnd)

width = right - left

height = bot - top

#返回句柄窗口的设备环境,覆盖整个窗口,包括非客户区,标题栏,菜单,边框

hWndDC = win32gui.GetWindowDC(hWnd)

#创建设备描述表

mfcDC = win32ui.CreateDCFromHandle(hWndDC)

#创建内存设备描述表

saveDC = mfcDC.CreateCompatibleDC()

#创建位图对象准备保存图片

saveBitMap = win32ui.CreateBitmap()

#为bitmap开辟存储空间

saveBitMap.CreateCompatibleBitmap(mfcDC,width,height)

#将截图保存到saveBitMap中

saveDC.SelectObject(saveBitMap)

#保存bitmap到内存设备描述表

saveDC.BitBlt((0,0), (width,height), mfcDC, (0, 0), win32con.SRCCOPY)

#如果要截图到打印设备:

###最后一个int参数:0-保存整个窗口,1-只保存客户区。如果PrintWindow成功函数返回值为1

#result = windll.user32.PrintWindow(hWnd,saveDC.GetSafeHdc(),0)

#print(result) #PrintWindow成功则输出1

#保存图像

##方法一:windows api保存

###保存bitmap到文件

saveBitMap.SaveBitmapFile(saveDC,"img_Winapi.bmp")

##方法二(第一部分):PIL保存

###获取位图信息

bmpinfo = saveBitMap.GetInfo()

bmpstr = saveBitMap.GetBitmapBits(True)

###生成图像

im_PIL = Image.frombuffer('RGB',(bmpinfo['bmWidth'],bmpinfo['bmHeight']),bmpstr,'raw','BGRX',0,1)

##方法二(后续转第二部分)

##方法三(第一部分):opencv+numpy保存

###获取位图信息

signedIntsArray = saveBitMap.GetBitmapBits(True)

##方法三(后续转第二部分)

#内存释放

win32gui.DeleteObject(saveBitMap.GetHandle())

saveDC.DeleteDC()

mfcDC.DeleteDC()

win32gui.ReleaseDC(hWnd,hWndDC)

##方法二(第二部分):PIL保存

###PrintWindow成功,保存到文件,显示到屏幕

im_PIL.save("im_PIL.png") #保存

im_PIL.show() #显示

##方法三(第二部分):opencv+numpy保存

###PrintWindow成功,保存到文件,显示到屏幕

im_opencv = numpy.frombuffer(signedIntsArray, dtype = 'uint8')

im_opencv.shape = (height, width, 4)

cv2.cvtColor(im_opencv, cv2.COLOR_BGRA2RGB)

cv2.imwrite("im_opencv.jpg",im_opencv,[int(cv2.IMWRITE_JPEG_QUALITY), 100]) #保存

cv2.namedWindow('im_opencv') #命名窗口

cv2.imshow("im_opencv",im_opencv) #显示

cv2.waitKey(0)

cv2.destroyAllWindows()

对桌面截图

截图整个桌面

import win32gui

import win32ui

import win32con

import win32api

# 获取桌面

hdesktop = win32gui.GetDesktopWindow()

# 分辨率适应

width = win32api.GetSystemMetrics(win32con.SM_CXVIRTUALSCREEN)

height = win32api.GetSystemMetrics(win32con.SM_CYVIRTUALSCREEN)

left = win32api.GetSystemMetrics(win32con.SM_XVIRTUALSCREEN)

top = win32api.GetSystemMetrics(win32con.SM_YVIRTUALSCREEN)

# 创建设备描述表

desktop_dc = win32gui.GetWindowDC(hdesktop)

img_dc = win32ui.CreateDCFromHandle(desktop_dc)

# 创建一个内存设备描述表

mem_dc = img_dc.CreateCompatibleDC()

# 创建位图对象

screenshot = win32ui.CreateBitmap()

screenshot.CreateCompatibleBitmap(img_dc, width, height)

mem_dc.SelectObject(screenshot)

# 截图至内存设备描述表

mem_dc.BitBlt((0, 0), (width, height), img_dc, (0, 0), win32con.SRCCOPY)

# 将截图保存到文件中

screenshot.SaveBitmapFile(mem_dc, 'screenshot.bmp')

# 内存释放

mem_dc.DeleteDC()

win32gui.DeleteObject(screenshot.GetHandle())

python调用win32_python调用win32接口进行截图相关推荐

  1. python有道自动翻译_Python 调用有道翻译接口实现翻译

    最近为了熟悉一下 js 用有道翻译练了一下手,写一篇博客记录一下,也希望能对大家有所启迪,不过这些网站更新太快,可能大家尝试的时候会有所不同. 首先来看一下网页 post 过去的数据 大家不难发现,我 ...

  2. python有道api-python 调用有道api接口的方法

    初学python ,研究了几天,写了一个python 调用 有道api接口程序 效果看下图: 申明:代码仅供和我一样的初学者学习交流 申请很简单的 ps:审核不用花时间的,请勿滥用!! #-*- co ...

  3. python实现简单的api接口-简单实现Python调用有道API接口(最新的)

    # ''' # Created on 2018-5-26 # # @author: yaoshuangqi # ''' import urllib.request import urllib.pars ...

  4. c++调用python接口作用是_利用Boost::Python实现C++调用python接口

    利用Boost::Python实现C++调用python接口 2019年11月06日 阅读数:7 这篇文章主要向大家介绍利用Boost::Python实现C++调用python接口,主要内容包括基础应 ...

  5. python的坐标代码_基于Python的地图坐标服务接口调用代码实例

    代码描述:基于Python的地图坐标服务接口调用代码实例 关联数据:地图坐标服务 接口地址:http://www.juhe.cn/docs/api/id/32 #!/usr/bin/python # ...

  6. 用Python调用华为云API接口发短信

    [摘要] 用Python调用华为云API接口实现发短信,当然能给调用发短信接口前提条件是通过企业实名认证,而且有一个通过审核的短信签名,话不多说,showcode #!/usr/bin/python3 ...

  7. c调用python接口_通过Python自带C/C++接口实现python与c/c++相互调用

    python的底层是c/c++,因此两种语言都有相互的接口,在以前已经写过一篇c++调用python接口让opencv中的cv::Mat类型在两种语言中相互传递,ubuntu下C++与Python混编 ...

  8. python在律师上作中的实例_基于Python的律师信息查询接口调用代码实例

    基于Python的律师信息查询接口调用代码实例代码描述:基于Python的律师信息查询接口调用代码实例 代码平台:聚合数据 #!/usr/bin/python # -*- coding: utf-8 ...

  9. python api接口调用_python 调用有道api接口的方法

    初学者学习python,研究了几天之后,我写了一个python程序调用有道api接口.效果如下图所示:声明:代码仅仅是像我这样的初学者学习和交流.应用程序非常简单.PS:评审不需要时间,请不要滥用!! ...

最新文章

  1. 国外物联网平台初探(四):Ayla Networks
  2. rabbitMQ第一篇:rabbitMQ的安装和配置
  3. 物联网细分领域-车联网(OBD)市场分析
  4. WINCE设备开机灰屏问题(很怪异)
  5. 在自己的linux服务器上面部署ShowDoc
  6. PCM接口详细介绍--TDM方式
  7. mysql 截取字符串部分值,Mysql字符串截取_获取指定字符串中的数据
  8. Windows破解逆向-CrackMe_1实例(使用OpenProcess修改内存中的值)
  9. 函数、迭代器、生成器、装饰器
  10. Think in Java第四版 读书笔记8第14章 类型信息(RTTI与反射)
  11. LeetCOde-394:字符串解码
  12. C++_类和对象_C++继承_继承中的构造和析构顺序---C++语言工作笔记064
  13. utilities(C++)——Null类的设计
  14. 算法:Longest Valid Parentheses(最长有效的括号)
  15. 高斯列主消元法 求非齐次线性方程组 C语言实现代码
  16. Python基础综合训练三(tkinter牛刀小试)
  17. 自建具备全文搜索能力的git server
  18. 程序员如何在技术上提升自己
  19. 达内python 资源_Python学习资源整理,优质Python学习资源推荐
  20. 动态规划之二见完全背包问题

热门文章

  1. 基于CAS实现SSO单点登录
  2. 2020年12月程序员工资统计,平均14222元,Java排名靠后!
  3. android 动态规划,7. 动态规划(二)Android移动应用开发.pdf
  4. linux增加阵列磁盘空间,Linux Ubuntu系统下通过LVM创建软raid来实现硬盘合并大小
  5. Java-重定向输出流实现程序日志
  6. vue create 新项目时,命令行工具卡死(npm卡死)
  7. python脚本简化jar操作命令
  8. C#操作SQLite数据库
  9. Normalize.css用法
  10. win2003(sp2 x86)+iis6+php-5.3.5-Win32 配置