Python调用windows API实现屏幕截图

Posted enumx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python调用windows API实现屏幕截图相关的知识,希望对你有一定的参考价值。

Python调用windows API实现屏幕截图

好处是

灵活
速度快
缺点是:

写法繁琐
不跨平台

import time
import win32gui, win32ui, win32con, win32api
def window_capture(filename):
  hwnd = 0 # 窗口的编号,0号表示当前活跃窗口
  # 根据窗口句柄获取窗口的设备上下文DC(Divice Context)
  hwndDC = win32gui.GetWindowDC(hwnd)
  # 根据窗口的DC获取mfcDC
  mfcDC = win32ui.CreateDCFromHandle(hwndDC)
  # mfcDC创建可兼容的DC
  saveDC = mfcDC.CreateCompatibleDC()
  # 创建bigmap准备保存图片
  saveBitMap = win32ui.CreateBitmap()
  # 获取监控器信息
  MoniterDev = win32api.EnumDisplayMonitors(None, None)
  w = MoniterDev[0][2][2]
  h = MoniterDev[0][2][3]
  # print w,h   #图片大小
  # 为bitmap开辟空间
  saveBitMap.CreateCompatibleBitmap(mfcDC, w, h)
  # 高度saveDC,将截图保存到saveBitmap中
  saveDC.SelectObject(saveBitMap)
  # 截取从左上角(0,0)长宽为(w,h)的图片
  saveDC.BitBlt((0, 0), (w, h), mfcDC, (0, 0), win32con.SRCCOPY)
  saveBitMap.SaveBitmapFile(saveDC, filename)
beg = time.time()
for i in range(10):
  window_capture("haha.jpg")
end = time.time()
print(end - beg)

以上是关于Python调用windows API实现屏幕截图的主要内容,如果未能解决你的问题,请参考以下文章

python实现屏幕截图

Python实现屏幕截图的两种方式

Python实现屏幕截图的两种方式

利用monkeyrunner实现Android屏幕连续截图

Java中怎么调用Windows的API

[转]c#调用API截图