python句柄部分操作

 1 ```python3
 2 # 通過窗口類名、窗口標題獲取控件句柄
 3 hwnd = win32gui.FindWindow("ClassName", "TitleName")
 4 # 通過句柄設置控件內容
 5 win32gui.SendMessage(hwnd , 12, 0, '文本內容')
 6 # 修改窗口標題
 7 SetWindowText(hwnd, "Title")
 8 #通過句柄獲取子窗口句柄
 9 ch_hwnd = win32gui.FindWindowEx(hwnd, 0, "ClassName", "TitleName")
10 
11 # 獲取所有子窗口
12 hwndChildList = []
13 win32gui.EnumChildWindows(hwnd, lambda hwnd, param: param.append(hwnd), hwndChildList)
14 print(hwndChildList)
15 # 模糊查詢句柄
16 def FindWinHwnd(title, top=True):
17     titles = []
18 
19     def foo(hwnd, mouse):
20         if top:
21             if IsWindow(hwnd) and IsWindowEnabled(hwnd) and IsWindowVisible(hwnd):
22                 if title in GetWindowText(hwnd):
23                     titles.append(hwnd)
24         else:
25             if title in GetWindowText(hwnd):
26                 titles.append(hwnd)
27 
28     EnumWindows(foo, 0)
29     if titles:
30         return titles[0]
31     else:
32         return 0
33 
34 # 截圖
35 def window_api_capture(file, hWnd=0):
36     if hWnd == 0:
37         MoniterDev = win32api.EnumDisplayMonitors(None, None)
38         width = MoniterDev[0][2][2]
39         height = MoniterDev[0][2][3]
40     else:
41         left, top, right, bot = win32gui.GetWindowRect(hWnd)
42         width = right - left
43         height = bot - top
44         # 返回句柄窗口的設備環境,覆蓋整個窗口,包括非客戶區,標題欄,菜單,邊框
45     hWndDC = win32gui.GetWindowDC(hWnd)
46     # 創建設備描述表
47     mfcDC = win32ui.CreateDCFromHandle(hWndDC)
48     # 創建內存設備描述表
49     saveDC = mfcDC.CreateCompatibleDC()
50     # 創建位圖對象準備保存圖片
51     saveBitMap = win32ui.CreateBitmap()
52     # 爲bitmap開闢存儲空間
53     saveBitMap.CreateCompatibleBitmap(mfcDC, width, height)
54     # 將截圖保存到saveBitMap中
55     saveDC.SelectObject(saveBitMap)
56     # 保存bitmap到內存設備描述表
57     saveDC.BitBlt((0, 0), (width, height), mfcDC, (0, 0), win32con.SRCCOPY)
58     try:
59         saveBitMap.SaveBitmapFile(saveDC, file)
60     except:
61         pass
62     win32gui.DeleteObject(saveBitMap.GetHandle())
63     saveDC.DeleteDC()
64     mfcDC.DeleteDC()
65     win32gui.ReleaseDC(hWnd, hWndDC)

 

原文出處:https://www.cnblogs.com/yubs/p/11647323.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章