1. 程式人生 > >pyQT指定視窗截圖

pyQT指定視窗截圖

問題:

如果要搜尋的外部程式的視窗標題比較容易得到[],問題是比較簡單的。如果視窗的標題不固定或者根本就沒有標題,怎麼得到視窗的類呢?

Introduction

Spy++是微軟出品的用來獲取Window視窗資訊的一個小工具。Spy++中,最常用的一個功能,就是識別視窗。獲取當前滑鼠位置; 獲取位於指定位置的視窗控制代碼; 獲取視窗類別; 獲取視窗內容或標題。

Spy++ (SPYXX.EXE) 提供系統的程序、執行緒、視窗和視窗訊息的圖形檢視。

使用 Spy++ 可以執行下列操作: 顯示系統物件(包括程序、執行緒和視窗)之間關係的圖形樹。 搜尋指定的視窗、執行緒、程序或訊息。 檢視選定的視窗、執行緒、程序或訊息的屬性。 直接從檢視中選擇視窗、執行緒、程序或訊息。 通過滑鼠定位,使用查詢程式工具選擇視窗。 使用複雜的訊息日誌選擇引數設定訊息選項。 提示使用 Spy++ 時,在許多例項中都可以單擊滑鼠右鍵顯示常用命令的彈出式選單。命令是否可用取決於指標的位置。例如,如果在指向視窗檢視中的某項時單擊並且選定的視窗可見,則彈出式“突出顯示”選單項將導致選定視窗的邊框閃爍,從而可以輕鬆地在螢幕上找到該視窗。

spy++獲取子視窗的控制代碼

spy++這個軟體來自VC++,裝好VC後,就可以在工具中看到。(沒安裝的也可以在網上下載得到spy++.exe)

spy++的使用:

啟動SPY++ > spy++的查詢功能(選單欄上望遠鏡圖示)


拖動耙心(黑色標記處)到這篇部落格就可以看到以上內容

handle就是16進位制的視窗控制代碼

caption就是視窗名lpWindowName

class就是視窗類名lpClassName

Note:點選“確定”,可以看到了SPY++顯示視窗中的其它子內容。

python中獲取子視窗的控制代碼

使用PyWin32庫,它是對windows介面的Python封裝,VC能做的它基本都行。

python使用win32gui擷取某個視窗內容
import win32gui
from PIL import ImageGrab
import win32con
from Utility.Colors import DEFAULT, RED

hwnd = win32gui.FindWindow("MozillaWindowClass", "Spy++獲取子視窗的控制代碼 - 皮皮Blog - 部落格頻道 - CSDN.NET - Mozilla Firefox")
if not hwnd:
print(RED, 'window not found!', DEFAULT)
else:
print(hwnd) win32gui.ShowWindow(hwnd, win32con.SW_RESTORE) # 強行顯示介面後才好截圖 win32gui.SetForegroundWindow(hwnd) # 將視窗提到最前 # 裁剪得到全圖 game_rect = win32gui.GetWindowRect(hwnd) src_image = ImageGrab.grab(game_rect) # src_image = ImageGrab.grab((game_rect[0] + 9, game_rect[1] + 190, game_rect[2] - 9, game_rect[1] + 190 + 450)) src_image.show()
Note:得到Image影象後可用show()方法,使用系統預設的影象檢視工具開啟,方便除錯,也可以用save(filename)儲存成檔案,對應的可以Image.open(filename)開啟獲得。from:http://blog.csdn.net/pipisorry/article/details/46559139