|
60鱼币
关于 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)
复制代码
|
最佳答案
查看完整内容
提问应该把相应的代码传完。
所谓 窗口后台截屏 指的是截取非当前活动窗口(而并非是最小化后的窗口,当然最少化也能截取,那就只是截取到标题栏)
截取后台窗口要用到api函数PrintWindow参考:
https://blog.csdn.net/weixin_30844603/article/details/114393580
|