yixinwenxin 发表于 2022-9-3 18:08:32

关于python win32 后台截屏 黑屏怎么解

关于 DC 的我到(CreateDCFromHandle) 创建设备描述表就不明白怎么回事了, 所以为什么 窗口后台截屏会出现黑屏以及怎么解决 也就不明白

import win32ui
import win32gui
import win32con

def get_img(hwnd):
    """
    后台截屏
    :param hwnd: 窗口句柄
    """
    left, top, right, bot = win32gui.GetWindowRect(hwnd)
    w = right - left
    h = bot - top
    dc = win32gui.GetWindowDC(hwnd)
    mfcDc = win32ui.CreateDCFromHandle(dc)# 创建设备描述表
    saveDC = mfcDc.CreateCompatibleDC()# 创建内存设备描述表
    saveBitMap = win32ui.CreateBitmap()# 创建位图对象准备保存图片
    saveBitMap.CreateCompatibleBitmap(mfcDc, w, h)# 为 bitmap 开辟存储空间
    saveDC.SelectObject(saveBitMap)# 将截图保存到 saveBitMap 中
    saveDC.BitBlt((0, 0), (w, h), mfcDc, (0, 0), win32con.SRCCOPY)# 保存bitmap到内存设备描述表
    saveBitMap.SaveBitmapFile(saveDC, fr"{hwnd}.bmp")# 保存bitmap到文件
    # 释放缓存
    win32gui.DeleteObject(saveBitMap.GetHandle())
    saveDC.DeleteDC()
    mfcDc.DeleteDC()
    win32gui.ReleaseDC(hwnd, dc)

ba21 发表于 2022-9-3 18:08:33

提问应该把相应的代码传完。

所谓 窗口后台截屏 指的是截取非当前活动窗口(而并非是最小化后的窗口,当然最少化也能截取,那就只是截取到标题栏)
截取后台窗口要用到api函数PrintWindow参考:
https://blog.csdn.net/weixin_30844603/article/details/114393580
页: [1]
查看完整版本: 关于python win32 后台截屏 黑屏怎么解