Python3 截图

来自姬鸿昌的知识库
跳到导航 跳到搜索
pip install pywin32
import time

import win32api
import win32con
import win32gui
import win32ui

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()

    end = time.time()

    print(end - beg)

# Press the green button in the gutter to run the script.
if __name__ == '__main__':
    window_capture("E:\\record\\2022\\7\\31\\test.jpg")

这个截图速度非常快