在Python使用Win32api接口实现后台截图
1 #对后台窗口截图 2 import win32gui, win32ui, win32con 3 import cv2 4 import numpy as np 5 6 #获取后台窗口的句柄,注意后台窗口不能最小化 7 hWnd = win32gui.FindWindow("NotePad",None) #窗口的类名可以用Visual Studio的SPY++工具获取 8 #获取句柄窗口的大小信息 9 left, top, right, bot = win32gui.GetWindowRect(hWnd) 10 width = right - left 11 height = bot - top 12 #返回句柄窗口的设备环境,覆盖整个窗口,包括非客户区,标题栏,菜单,边框 13 hWndDC = win32gui.GetWindowDC(hWnd) 14 #创建设备描述表 15 mfcDC = win32ui.CreateDCFromHandle(hWndDC) 16 #创建内存设备描述表 17 saveDC = mfcDC.CreateCompatibleDC() 18 #创建位图对象准备保存图片 19 saveBitMap = win32ui.CreateBitmap() 20 #为bitmap开辟存储空间 21 saveBitMap.CreateCompatibleBitmap(mfcDC,width,height) 22 #将截图保存到saveBitMap中 23 saveDC.SelectObject(saveBitMap) 24 #保存bitmap到内存设备描述表 25 saveDC.BitBlt((0,0), (width,height), mfcDC, (0, 0), win32con.SRCCOPY) 26 ###获取位图信息 27 signedIntsArray = saveBitMap.GetBitmapBits(True) 28 #内存释放 29 win32gui.DeleteObject(saveBitMap.GetHandle()) 30 saveDC.DeleteDC() 31 mfcDC.DeleteDC() 32 win32gui.ReleaseDC(hWnd,hWndDC) 33 #保存到文件 34 img = numpy.frombuffer(signedIntsArray, dtype = 'uint8') 35 img.shape = (height, width, 4) 36 cv2.cvtColor(img, cv2.COLOR_BGRA2RGB) 37 cv2.imwrite("img.jpg",img,[int(cv2.IMWRITE_JPEG_QUALITY), 100]) 38 #显示到屏幕 39 cv2.namedWindow('img') #命名窗口 40 cv2.imshow("img",img) #显示 41 cv2.waitKey(0) 42 cv2.destroyAllWindows()
分类:
Python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架