2017-09-03 67 views
0

有沒有辦法在應用程序中檢測輸入區域,如文本框和複選框?我想用一個數字標記每個輸入區域,這樣我就可以使用鍵盤在AHK之間跳轉輸入字段。Autohotkey - 如何檢測應用程序中的所有輸入區域/複選框?

例如:一旦腳本被激活並且活動窗口是谷歌瀏覽器,Chrome的地址欄會被標記爲#1。當我按下「1」時,光標將指向該區域。

我基本上試圖爲不是非常適合鍵盤的應用程序創建一個解決方法。

回答

0

答案是肯定的,如果複選框的數量及其在應用程序中的位置是固定的,並且您知道自動發生在哪臺機器上。

請研究ImageSearch如何從屏幕截圖找到它們。

如果您知道窗口中複選框的X/Y位置,還可以使用PixelGetColor來檢查是否可見。

您還應該使用隨附的AutoIt Spy檢查您的應用程序。該程序向您展示了它在應用程序窗口中可以看到的內容。

要得到您的標籤,請檢查Gui命令。如果你讓gui透明並且不關注,你可以在應用程序的頂部寫上標籤。

1

大多數Windows應用程序使用標準的Windows元素。 對於這些...

https://autohotkey.com/docs/commands/WinGet.htm - 帶有ControlList參數,獲取所有標準控件的列表。 對於那些:

https://autohotkey.com/docs/commands/ControlGet.htm - 可以得到控制的類型,和

https://autohotkey.com/docs/commands/ControlGetPos.htm - 可以得到位置和控制的尺寸。

一些也可以通過COM控制:https://gist.github.com/kheybot/7026077#automation-of-office-applications


命令行和控制檯程序有時可以直接傳達,使用標準的料流(STDIN,STDOUT STDERR,LPTN,PRN,NUL),或您可以使用COM或WSH與顯示程序的終端進行通信: https://gist.github.com/kheybot/7026077#interact-with-command-line

這對於大量遺留數據錄入程序很重要。


瀏覽器(如瀏覽器),不幸的是,不能使用這些重量級組件,因爲有可能是在頁面上太多,但也有其他的選擇與他們溝通,如COM,DDE,等與DOM通信: https://gist.github.com/kheybot/7026077#browser-automation

爲Web瀏覽器,我傾向於去的混合方法,用Greasemonkey的結合網頁瀏覽器的輸入區域(地址欄等)的AHK搬運/ Tampermonkey腳本可以處理網頁內的輸入字段 - 與使用任何屏幕截圖軟件相比,Javascript可以更好地處理使用DOM的輸入區域。還有使用功能測試套件類似硒自動化,並使用瀏覽器的插件功能編寫擴展來處理其UI的可能性。

這意味着,你現在有兩個規劃問題,當然...


Java應用程序,Flash應用,HTML5應用程序,一些圖形設計軟件,並且幾乎所有的電腦遊戲基本上只是圖形,無法從外部識別控件。

對於這些,您必須使用基本的屏幕抓取技巧:http://www.autohotkey.com/docs/commands/ImageSearch.htmhttp://www.autohotkey.com/docs/commands/PixelSearch.htm來識別特定的區域,這些只能通過對特定控件進行單獨編程來完成。對於通用檢測

一種選擇,雖然是有一些檢測的陰影(陰影,按鈕化成分等),並允許您標籤之間的部件檢測的方式發送一個點擊。不幸的是,現代平面設計意味着這並不總是可行的,所以你也可以嘗試尋找平板彩色矩形...除了有時有彎曲的角落。因爲平面設計師討厭人。


在這一點上,你會希望看到你在這裏是一個分形複雜的無限拉比。

您可以製作一個簡單的ControlGet解決方案,該解決方案對於您經常使用的許多應用程序不起作用......或者您可以創建混合方法,針對多個應用程序單獨使用,同時還嘗試爲無法識別的應用程序。

如果要創建這個供自己使用,我會說的使得它與你知道並經常使用的應用程序的工作目標,這應該是足夠的。

如果你寫它作爲輔助功能的軟件供他人使用,我會說目標的有它的用戶可配置爲每個應用程序:讓他們控制他們想要點擊什麼樣的輸入元素,以及以什麼順序,因爲自動檢測將永遠不會完美,並會很少挑選理想的解決方案。

相關問題