Python 使用 win32gui+win32api 通過鼠標獲取句柄
一. 相關背景
通過python實現(xiàn)某些win相關的自動化操作時,可能需要通過句柄操作.
獲取的方法有很多.對此也有相關的可視化的軟件實現(xiàn)類似的功能.比如:
- 通過vs工具獲取窗體或者程序句柄
- 使用按鍵精靈獲取句柄
- 使用某星小助手等
為此分享的當前的文章介紹的方法也是一種可視化的獲取句柄的方法,感興趣的或有需要的,可以一試.
二. 完整示例
Py文件 通過鼠標獲取句柄.py
import time
import win32gui
import win32api
# 記錄最后的句柄
last_hwnd = ''
# 循環(huán)獲取句柄
while (True):
# 獲取鼠標坐標
point = win32api.GetCursorPos()
# 根據(jù)鼠標坐標獲取句柄
hwnd = win32gui.WindowFromPoint(point)
# 判斷是否已打印輸出到屏幕
if last_hwnd != hwnd:
# 如果未打印,記錄當前句柄,并獲取 ClassName 和 WindowText
cn = win32gui.GetClassName(hwnd)
text = win32gui.GetWindowText(hwnd)
# 打印 句柄信息
print('句柄:', hwnd, '類名:', cn, '窗口標題:', text)
# 并記錄最后一個句柄,避免 鼠標停留在同一個句柄下時 循環(huán)輸出相同的句柄信息
last_hwnd = hwnd
# 循環(huán)睡眠200ms,降低循環(huán)速度,避免循環(huán)過快 浪費系統(tǒng)資源(cpu等),200毫秒的延時體驗基本兼顧.
time.sleep(0.2)
三. 使用步驟和說明
(默認 具有python運行環(huán)境 版本推薦: python3.10.8)
- 創(chuàng)建
通過鼠標獲取句柄.py
文件 - 運行
通過鼠標獲取句柄.py
- 移動鼠標 至 想要獲取 句柄的位置,此時程序輸出信息中將會打印相關句柄信息
四. 知識點描述歸納
1. 獲取鼠標坐標
# 獲取鼠標坐標
point = win32api.GetCursorPos()
2.根據(jù)鼠標坐標獲取句柄
# 根據(jù)鼠標坐標獲取句柄
hwnd = win32gui.WindowFromPoint(point)
3.根據(jù)句柄獲取 ClassName
# 獲取 ClassName
cn = win32gui.GetClassName(hwnd)
4.根據(jù)句柄獲取 WindowText
# 獲取 WindowText
text = win32gui.GetWindowText(hwnd)
五. 更多資料信息
關于句柄?
句柄(Handle)是一個用來標識對象或者項目的標識符,可以用來描述窗體、文件等,值得注意的是句柄不能是常量 .
句柄在 Windows編程中是一個很重要的概念,在 Windows程序中并不是用物理地址來標識一個內(nèi)存塊、文件、任務或動態(tài)裝入模塊的。相反地,Windows API給這些項目分配確定的句柄,并將句柄返回給應用程序,然后通過句柄來進行操作。
句柄是一個標識符,是用來標識對象或者項目的。從數(shù)據(jù)類型上來看它只是一個16位的無符號整數(shù)。應用程序幾乎總是通過調(diào)用一個Windows函數(shù)來獲得一個句柄,之后其他的Windows函數(shù)就可以使用該句柄,以引用相應的對象。在 Windows編程中會用到大量的句柄 。
在計算機科學中,句柄(Handle)是一種引用或標識對象的方式,它可以用來訪問或操作底層系統(tǒng)資源。
不同的操作系統(tǒng)可能會有不同的實現(xiàn)和用途。
相關引用文章:
- 句柄(Handle)- 百度百科
- 什么是句柄,句柄有什么作用
- 句柄是什么?一文帶你了解!
常見的句柄有哪些?
常見的有窗口句柄(hwnd),設備描述表句柄(hdc),內(nèi)存句柄(hmem),文件句柄,進程句柄,線程句柄,筆的類型句柄(hpen),字體句柄(hfont),區(qū)域句柄(hrgn) 等
通過句柄可以做哪些事情?
以下 4點 是來自一個 2011年(12年前的) 的 前輩們 討論的帖子的內(nèi)容 [可點擊訪問])
1:獲取該窗口的子窗口信息,比如登錄框上的字符信息 GetWindowText
2:向該窗口發(fā)送消息,以便完成類似輸入字符,控制游戲窗口人物走動之類的事情。 SentInput mouseevent keyboardevent SendMessage…
3:更改該窗口的外觀,比如換個標題欄圖標,隱藏邊框,即只顯示客戶區(qū)(類似播放器精簡模式) LoadIcon SetIcon SetWindowLong SetClassLong…
4:讓該窗口內(nèi)嵌在自己程序的某個窗口里顯示 SetParent
等
更多可參考:
- win32API中文參考手冊:http://www.yfvb.com/help/win32sdk
- windows下的句柄利用
說明
更多相關知識,有機會日后再更新補充,歡迎點贊收藏.
如有問題歡迎評論討論分享.文章來源:http://www.zghlxwxcb.cn/news/detail-622779.html
路漫漫其修遠兮,吾將上下而求索文章來源地址http://www.zghlxwxcb.cn/news/detail-622779.html
到了這里,關于Python 使用 win32gui+win32api 通過鼠標獲取句柄的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!