python win32 窗口截图
生活随笔
收集整理的這篇文章主要介紹了
python win32 窗口截图
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
python win32 窗口截圖
獲取窗口句柄和標題
import win32guihwnd_title = dict()def _get_all_hwnd(hwnd, mouse):if win32gui.IsWindow(hwnd) and win32gui.IsWindowEnabled(hwnd) and win32gui.IsWindowVisible(hwnd):hwnd_title.update({hwnd: win32gui.GetWindowText(hwnd)})win32gui.EnumWindows(_get_all_hwnd, 0) for wnd in hwnd_title.items():print(wnd)運行結果如下,格式為:(窗口句柄, 窗口標題)
可自行根據標題篩選想要的窗口
根據窗口句柄截圖
import win32com.client import win32gui import win32api import win32con import win32ui from PIL import Imagedef setForeground(hwnd):"""將窗口設置為最前面:param hwnd: 窗口句柄 一個整數"""if hwnd != win32gui.GetForegroundWindow():shell = win32com.client.Dispatch("WScript.Shell")shell.SendKeys('%')win32gui.SetForegroundWindow(hwnd)def winShot(hwnd):"""根據窗口句柄截取窗口視圖:param hwnd: 窗口句柄 一個整數"""bmpFileName = 'screenshot.bmp'jpgFileName = 'screenshot.jpg'r = win32gui.GetWindowRect(hwnd)hwin = win32gui.GetDesktopWindow()# 圖片最左邊距離主屏左上角的水平距離left = win32api.GetSystemMetrics(win32con.SM_XVIRTUALSCREEN)# 圖片最上邊距離主屏左上角的垂直距離top = win32api.GetSystemMetrics(win32con.SM_YVIRTUALSCREEN)hwindc = win32gui.GetWindowDC(hwin)srcdc = win32ui.CreateDCFromHandle(hwindc)memdc = srcdc.CreateCompatibleDC()bmp = win32ui.CreateBitmap()bmp.CreateCompatibleBitmap(srcdc, r[2] - r[0], r[3] - r[1])memdc.SelectObject(bmp)memdc.BitBlt((-r[0], top - r[1]), (r[2], r[3] - top), srcdc, (left, top), win32con.SRCCOPY)bmp.SaveBitmapFile(memdc, bmpFileName)im = Image.open(bmpFileName)im = im.convert('RGB')im.save(jpgFileName)if __name__ == '__main__':setForeground(5114244)winShot(5114244)總結
以上是生活随笔為你收集整理的python win32 窗口截图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入理解mybatis原理, Mybat
- 下一篇: 经典模拟电路仿真