电竞比分网-中国电竞赛事及体育赛事平台

分享

學(xué)會用按鍵精靈獲取子窗口句柄

 本明書館 2018-09-11
  1. 1

    【父窗口與子窗口】

    每一個(gè)窗體form都是一個(gè)父窗口,它不是其他任一個(gè)窗體的子窗口.窗體上的所有控件,按鈕等就是窗體的子窗口.一個(gè)窗口(除了窗體)既可能是父窗口,也可能是子窗口.比如窗體里面有一個(gè)frame,frame里面的控件就是frame的子窗口,但frame同時(shí)也是窗體的子窗口.就像容器里面裝著容器.最大的那個(gè)容器就是窗體.每一個(gè)容器里面的東西就是其子窗口.

  2. 2

    【常見的父窗口和子窗口的關(guān)系】

                                                                                                                

    【父窗口對應(yīng)一個(gè)子窗口】

    1、 有類名沒有標(biāo)題(有標(biāo)題沒有類名)

    例如:記事本,它只有一個(gè)子窗口,子窗口只有類名沒有標(biāo)題。

    學(xué)會用按鍵精靈獲取子窗口句柄
  3. 3

    我們要如何查找獲取到這個(gè)子窗口的句柄呢?

    首先,我們先復(fù)習(xí)下按鍵里的獲取子窗口句柄的命令。

    命令名稱:

    FindEx 查找子窗口

    命令功能:

    根據(jù)父窗口句柄查找子窗口匹配類名或者匹配標(biāo)題

    命令參數(shù):

    參數(shù)1 整數(shù)型,父窗口句柄

    參數(shù)2 整數(shù)型,子窗口句柄

    參數(shù)3 字符串型,匹配類名

    參數(shù)4 字符串型,匹配標(biāo)題

    ㈠ 先要獲取父窗口的句柄,然后根據(jù)父窗口的句柄來找子窗口。

    記事本父窗口的標(biāo)題是:無標(biāo)題 - 記事本 類名是:Notepad

    hwnd= Plugin.Window.find("Notepad" ,"無標(biāo)題 - 記事本") //獲取記事本父窗口句柄

    ㈡  獲取到父窗口句柄之后,我們還需要知道子窗口的類名,類名為:Edit

    zhwnd = Plugin.Window.findex(hwnd, 0, "Edit", 0) //獲取子窗口句柄

    *這里子窗口句柄的值設(shè)置為0,可能會有很多童鞋很困惑,findex命令不就是獲取子窗口句柄的嗎?那這里還設(shè)置一個(gè)子窗口句柄的值干嘛?我要知道還要用findex來找嗎?

    小編剛接觸這個(gè)命令的時(shí)候,對于這個(gè)參數(shù)也非常疑惑,后來發(fā)現(xiàn)是這樣的:

    findex命令里的子窗口句柄,指的是當(dāng)前要查找的子窗口上面一個(gè)子窗口的句柄。

    學(xué)會用按鍵精靈獲取子窗口句柄
  4. 4

    例如上圖:當(dāng)我們要找創(chuàng)建時(shí)間這個(gè)子窗口的時(shí)候,findex命令里的子窗口句柄參數(shù)就設(shè)置為紅框里子窗口的句柄。

    2、沒有類名也沒有標(biāo)題

    父窗口下只有一個(gè)子窗口的情況,標(biāo)題和類名不設(shè)置是可以的。

    hwnd= Plugin.Window.find(0,"無標(biāo)題 - 記事本")

    zhwnd = Plugin.Window.findex(hwnd, 0, 0, 0)

    TracePrint zhwnd

    結(jié)果:

    學(xué)會用按鍵精靈獲取子窗口句柄
  5. 5

    【父窗口對應(yīng)多個(gè)子窗口】

    1、 多個(gè)子窗口的類名或標(biāo)題不一樣

    拿有道云筆記窗口作為例子:

    學(xué)會用按鍵精靈獲取子窗口句柄
  6. 6

    它的這兩個(gè)子窗口的類名標(biāo)題都不一樣,這樣的情況我們按照前面介紹的父窗口下只有一個(gè)子窗口的方式來查找就可以了。

    代碼:

    hwnd = Plugin.Window.find(0,"有道云筆記  Haiye")

    zhwnd = Plugin.Window.findex(hwnd, 0, "NETEASE POPO2007 List", 0)

    TracePrint zhwnd

    結(jié)果:

    學(xué)會用按鍵精靈獲取子窗口句柄
  7. 7

    2、 多個(gè)子窗口的類名或標(biāo)題一樣

    學(xué)會用按鍵精靈獲取子窗口句柄
  8. 8

    有道云筆記下的這兩個(gè)子窗口的類名、標(biāo)題都是一樣的。

    hwnd = Plugin.Window.find(0,"有道云筆記  Haiye")

    HwndEx = Plugin.Window.findex(hwnd, 0, "Popo.UI.Controls.Class.SkinSplitter", 0)

    上面的代碼只能找到第一個(gè)類名為Popo.UI.Controls.Class.SkinSplitter的子窗口,第二個(gè)無法找到。 這樣的情況,該怎么找第二個(gè)呢?

    在前面我們提到過,findex里的子窗口句柄這個(gè)參數(shù),在這里我們就可以利用它。

    思路如下:

    1、獲取父窗口句柄

    2、獲取第一個(gè)子窗口句柄

    3、根據(jù)父窗口句柄以及第一個(gè)子窗口句柄,獲取第二個(gè)子窗口句柄

    代碼:

    hwnd = Plugin.Window.find(0,"有道云筆記  Haiye")

    HwndEx = Plugin.Window.findex(hwnd, 0, "Popo.UI.Controls.Class.SkinSplitter", 0)

    TracePrint HwndEx

    HwndEx = Plugin.Window.findex(hwnd, HwndEx, "Popo.UI.Controls.Class.SkinSplitter", 0)

    TracePrint HwndEx

    結(jié)果:

    學(xué)會用按鍵精靈獲取子窗口句柄
  9. 9

    【子窗口下還有子窗口】

    例如按鍵抓抓窗口:

    學(xué)會用按鍵精靈獲取子窗口句柄
    學(xué)會用按鍵精靈獲取子窗口句柄
  10. 10

    抓抓父窗口下類名為#32770的子窗口,它還有它的子窗口,我們?nèi)绻?32770的子窗口下標(biāo)題為句柄的窗口,該如何查找呢?

    思路:

    1、獲取抓抓父窗口句柄

    2、根據(jù)父窗口句柄找#32770的子窗口句柄

    3、以#32770的子窗口作為父窗口, 繼續(xù)查找下一級子窗口

    代碼:

    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

    結(jié)果:

    學(xué)會用按鍵精靈獲取子窗口句柄

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多