1. 程式人生 > >多層視窗如何抓取控制代碼以及後臺滑鼠位置解決方案

多層視窗如何抓取控制代碼以及後臺滑鼠位置解決方案

多層視窗如何抓取控制代碼以及後臺滑鼠位置困擾了很多新手,我認為很多人疑惑後臺滑鼠位置其實主要問題還是在控制代碼的抓取問題上。
先附上程式碼
[code]
HF = Plugin.Window.Find("Container", 0) 'HF是我定義的總父視窗的變數,視窗控制代碼的變數名是可以自己隨意取的
HF1 = Plugin.Window.FindEx(HF, 0, "Shell Embedding", 0) '下一層視窗
HF2 = Plugin.Window.FindEx(HF1, 0, "Shell DocObject View", 0) '下下一層視窗
Hwnd = Plugin.Window.FindEx(HF2, 0, "Internet Explorer_Server", 0)'我們主要操作的視窗,我把變數名起為Hwnd,因為按鍵後臺命令的控制代碼預設是Hwnd,我懶得每次都改了。
MessageBox "HF:" & HF & ",HF1:" & HF1 & ",HF2:" & HF2 & ",Hwnd:" & Hwnd '把控制代碼讀取出來看看是否正確
Call Plugin.Bkgnd.RightClick(Hwnd, 133, 86) '這個是做了一個簡單的滑鼠右鍵點選的動作。
[/code]

第一步:抓你要操作的視窗的控制代碼,我們這裡以360的IE視窗操作舉例,抓控制代碼,用按鍵抓抓也行,用別的輔助
工具
也可,我用的視窗雷達,附了視窗雷達的程式,這裡僅代表所有看帖受益者公開向視窗雷達的作者致以萬分非常的感謝。
下載地址請訪問原帖
視窗雷達下載地址:
本帖隱藏的內容需要回復才可以瀏覽


第二步:寫程式:


[code]HF = Plugin.Window.Find("Container", 0) 'HF是我定義的總父視窗的變數,視窗控制代碼的變數名是可以自己隨意取的
[/code]

我們看到雷達視窗抓了我麼要獲取的控制代碼有3個父控制代碼,先找到最上一層的父控制代碼

第三步:分別找到大哥和二哥
[code]HF1 = Plugin.Window.FindEx(HF, 0, "Shell Embedding", 0) '下一層視窗
HF2 = Plugin.Window.FindEx(HF1, 0, "Shell DocObject View", 0) '下下一層視窗[/code]

第四步:
找到我們要操作的視窗控制代碼,他的父控制代碼其實就是HF2,但是HF2又不能直接用Find命令找到,所以要這樣逐層的查詢。很多新手常見錯誤就是直接通過HF這個總父控制代碼來找第三層第四層的控制代碼,當然找不到了。
正確的找法如下:
[code]Hwnd = Plugin.Window.FindEx(HF2, 0, "Internet Explorer_Server", 0)[/code]

不正確的找法如下:
[code]Hwnd = Plugin.Window.FindEx(HF, 0, "Internet Explorer_Server", 0)[/code]

找準確了控制代碼以後,後臺滑鼠位置問題就迎刃而解。

第五步:開啟按鍵抓抓,指定視窗控制代碼截圖。

下載地址請訪問原帖

第六步:不要再重新定義起始座標了,在你要操作的位置點右鍵抓點,抓好點的x,y座標就是正確的座標
Call Plugin.Bkgnd.RightClick(Hwnd, 133, 86),不需要再去更改了,你抓的點是133, 86,你就寫133, 86,就這麼簡單。