酷知百科網

位置:首頁 > 遊戲數碼 > 電腦

學會用按鍵精靈獲取子視窗句柄

電腦6.06K

電腦的桌面是最頂級的視窗,在桌面裏的其他程序視窗是桌面的子視窗。那到底父視窗和子視窗是怎麼理解的呢?

操作方法

(01)【父視窗與子視窗】每一個窗體form都是一個父視窗,它不是其他任一個窗體的子視窗.窗體上的所有控件,按鈕等就是窗體的子視窗.一個視窗(除了窗體)既可能是父視窗,也可能是子視窗.比如窗體裏面有一個frame,frame裏面的控件就是frame的子視窗,但frame同時也是窗體的子視窗.就像容器裏面裝着容器.最大的那個容器就是窗體.每一個容器裏面的東西就是其子視窗.

(02)【常見的父視窗和子視窗的關係】【父視窗對應一個子視窗】1、 有類名沒有標題(有標題沒有類名)例如:記事本,它只有一個子視窗,子視窗只有類名沒有標題。

學會用按鍵精靈獲取子視窗句柄

(03)我們要如何查找獲取到這個子視窗的句柄呢?首先,我們先複習下按鍵裏的獲取子視窗句柄的命令。命令名稱:FindEx 查找子視窗命令功能:根據父視窗句柄查找子視窗匹配類名或者匹配標題命令參數:參數1 整數型,父視窗句柄參數2 整數型,子視窗句柄參數3 字元串型,匹配類名參數4 字元串型,匹配標題㈠ 先要獲取父視窗的句柄,然後根據父視窗的句柄來找子視窗。記事本父視窗的標題是:無標題 - 記事本 類名是:Notepadhwnd= Plugin.Window.find("Notepad" ,"無標題 - 記事本") //獲取記事本父視窗句柄㈡  獲取到父視窗句柄之後,我們還需要知道子視窗的類名,類名爲:Editzhwnd = Plugin.Window.findex(hwnd, 0, "Edit", 0) //獲取子視窗句柄*這裏子視窗句柄的值設定爲0,可能會有很多童鞋很困惑,findex命令不就是獲取子視窗句柄的嗎?那這裏還設定一個子視窗句柄的值幹嘛?我要知道還要用findex來找嗎?小編剛接觸這個命令的時候,對於這個參數也非常疑惑,後來發現是這樣的:findex命令裏的子視窗句柄,指的是當前要查找的子視窗上面一個子視窗的句柄。

學會用按鍵精靈獲取子視窗句柄 第2張

(04)例如上圖:當我們要找創建時間這個子視窗的時候,findex命令裏的子視窗句柄參數就設定爲紅框裏子視窗的句柄。2、沒有類名也沒有標題父視窗下只有一個子視窗的情況,標題和類名不設定是可以的。hwnd= Plugin.Window.find(0,"無標題 - 記事本")zhwnd = Plugin.Window.findex(hwnd, 0, 0, 0)TracePrint zhwnd結果:

學會用按鍵精靈獲取子視窗句柄 第3張

(05)【父視窗對應多個子視窗】1、 多個子視窗的類名或標題不一樣拿有道雲筆記視窗作爲例子:

學會用按鍵精靈獲取子視窗句柄 第4張

(06)它的這兩個子視窗的類名標題都不一樣,這樣的情況我們按照前面介紹的父視窗下只有一個子視窗的方式來查找就可以了。代碼:hwnd = Plugin.Window.find(0,"有道雲筆記  Haiye")zhwnd = Plugin.Window.findex(hwnd, 0, "NETEASE POPO2007 List", 0)TracePrint zhwnd結果:

學會用按鍵精靈獲取子視窗句柄 第5張

(07)2、 多個子視窗的類名或標題一樣

學會用按鍵精靈獲取子視窗句柄 第6張

(08)有道雲筆記下的這兩個子視窗的類名、標題都是一樣的。hwnd = Plugin.Window.find(0,"有道雲筆記  Haiye")HwndEx = Plugin.Window.findex(hwnd, 0, "Popo.UI.Controls.Class.SkinSplitter", 0)上面的代碼只能找到第一個類名爲Popo.UI.Controls.Class.SkinSplitter的子視窗,第二個無法找到。 這樣的情況,該怎麼找第二個呢?在前面我們提到過,findex裏的子視窗句柄這個參數,在這裏我們就可以利用它。思路如下:1、獲取父視窗句柄2、獲取第一個子視窗句柄3、根據父視窗句柄以及第一個子視窗句柄,獲取第二個子視窗句柄代碼:hwnd = Plugin.Window.find(0,"有道雲筆記  Haiye")HwndEx = Plugin.Window.findex(hwnd, 0, "Popo.UI.Controls.Class.SkinSplitter", 0)TracePrint HwndExHwndEx = Plugin.Window.findex(hwnd, HwndEx, "Popo.UI.Controls.Class.SkinSplitter", 0)TracePrint HwndEx結果:

學會用按鍵精靈獲取子視窗句柄 第7張

(09)【子視窗下還有子視窗】例如按鍵抓抓視窗:

學會用按鍵精靈獲取子視窗句柄 第8張
學會用按鍵精靈獲取子視窗句柄 第9張

(10)抓抓父視窗下類名爲#32770的子視窗,它還有它的子視窗,我們如果要找#32770的子視窗下標題爲句柄的視窗,該如何查找呢?思路:1、獲取抓抓父視窗句柄2、根據父視窗句柄找#32770的子視窗句柄3、以#32770的子視窗作爲父視窗, 繼續查找下一級子視窗代碼:hwnd= Plugin.Window.find(0,"按鍵抓抓輔助工具2014.00.14006")zhwnd = Plugin.Window.findex(hwnd, 0, "#32770", 0)zzhwnd = Plugin.Window.findex(zhwnd, 0, 0, "句柄")TracePrint zzhwnd結果:

學會用按鍵精靈獲取子視窗句柄 第10張