python基于win32實(shí)現(xiàn)窗口截圖
本文實(shí)例為大家分享了python基于win32實(shí)現(xiàn)窗口截圖的具體代碼,供大家參考,具體內(nèi)容如下
獲取窗口句柄和標(biāo)題
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)
運(yùn)行結(jié)果如下,格式為:(窗口句柄, 窗口標(biāo)題)可自行根據(jù)標(biāo)題篩選想要的窗口
(65772, ’’)(262798, ’pythonProject ? screenShot.py’)(5114244, ’項(xiàng)目里程碑.ppt[兼容模式] - PowerPoint’)(3803304, ’’)(133646, ’’)(133642, ’’)
根據(jù)窗口句柄截圖
import win32com.clientimport win32guiimport win32apiimport win32conimport win32uifrom PIL import Imagedef setForeground(hwnd): ''' 將窗口設(shè)置為最前面 :param hwnd: 窗口句柄 一個(gè)整數(shù) ''' if hwnd != win32gui.GetForegroundWindow(): shell = win32com.client.Dispatch('WScript.Shell') shell.SendKeys(’%’) win32gui.SetForegroundWindow(hwnd)def winShot(hwnd): ''' 根據(jù)窗口句柄截取窗口視圖 :param hwnd: 窗口句柄 一個(gè)整數(shù) ''' 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)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. .NET中l(wèi)ambda表達(dá)式合并問題及解決方法2. CSS hack用法案例詳解3. PHP設(shè)計(jì)模式中工廠模式深入詳解4. ASP.NET MVC遍歷驗(yàn)證ModelState的錯(cuò)誤信息5. Ajax實(shí)現(xiàn)表格中信息不刷新頁面進(jìn)行更新數(shù)據(jù)6. asp(vbs)Rs.Open和Conn.Execute的詳解和區(qū)別及&H0001的說明7. 解決AJAX返回狀態(tài)200沒有調(diào)用success的問題8. ThinkPHP5實(shí)現(xiàn)JWT Token認(rèn)證的過程(親測(cè)可用)9. JSP數(shù)據(jù)交互實(shí)現(xiàn)過程解析10. ASP 信息提示函數(shù)并作返回或者轉(zhuǎn)向
