學會用按鍵精靈獲取子視窗控制代碼

來源:酷知科普網 5.7K

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

操作方法

(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張
熱門標籤