原文:https://blog.csdn.net/zhuisui_woxin/article/details/84345036
對后台窗口截圖保存
用這個工具查看窗口的信息:窗口查找工具 WinSpy-1.0.3
#對后台窗口截圖 import win32gui, win32ui, win32con from ctypes import windll from PIL import Image import cv2 import numpy #獲取后台窗口的句柄,注意后台窗口不能最小化 hWnd = win32gui.FindWindow("Chrome_WidgetWin_1","在線翻譯_有道 - Google Chrome") #窗口的類名可以用Visual Studio的SPY++工具獲取 #獲取句柄窗口的大小信息 left, top, right, bot = win32gui.GetWindowRect(hWnd) width = right - left height = bot - top #返回句柄窗口的設備環境,覆蓋整個窗口,包括非客戶區,標題欄,菜單,邊框 hWndDC = win32gui.GetWindowDC(hWnd) #創建設備描述表 mfcDC = win32ui.CreateDCFromHandle(hWndDC) #創建內存設備描述表 saveDC = mfcDC.CreateCompatibleDC() #創建位圖對象准備保存圖片 saveBitMap = win32ui.CreateBitmap() #為bitmap開辟存儲空間 saveBitMap.CreateCompatibleBitmap(mfcDC,width,height) #將截圖保存到saveBitMap中 saveDC.SelectObject(saveBitMap) #保存bitmap到內存設備描述表 saveDC.BitBlt((0,0), (width,height), mfcDC, (0, 0), win32con.SRCCOPY) #如果要截圖到打印設備: ###最后一個int參數:0-保存整個窗口,1-只保存客戶區。如果PrintWindow成功函數返回值為1 result = windll.user32.PrintWindow(hWnd,saveDC.GetSafeHdc(),0) print(result) #PrintWindow成功則輸出1 #保存圖像 ##方法一:windows api保存 ###保存bitmap到文件 saveBitMap.SaveBitmapFile(saveDC,"img_Winapi.bmp")
通過裁剪的方式 對窗口截屏