2015-10-11 64 views
0

我使用MS Excel表格進行測試,但無法正常工作。我的腳本是這樣的:如何在Autohotkey中使用ControlGetText命令?

F1:: 
ControlGetText, OutputVar, Edit1, ahk_class XLMAIN 
Return 
F2:: 
Send %OutputVar% 
Return 

所以,當我按下熱鍵F1,腳本應該取回編輯框中的文本,當我按下快捷鍵F2應該發送的文本,但它什麼都不做就按這些鍵。

正如你可以在這個快照中看到的:

screenshot

(所有的控制ID僅用於測試目的)

回答

0

你正確地使用它。

有很多控件不會讓你直接檢索文本。

在這種情況下的問題是,Excel停止尊重其WinAPI起源並不存儲控件中的文本。連接到運行Excel應用程序並使用其自動化接口:

F1::address := ComObjActive("Excel.Application").ActiveCell.Address(0,0) 
F2::send %address% 

對於SysTreeView32控制,你可以嘗試low level SendMessage method

+0

感謝@wOxxOm您的回覆。但我想通過使用controlgettext命令從任何應用程序檢索任何值。你能告訴我如何在目前的情況下使用它嗎?你建議使用com對象模塊。但它只適用於Excel應用程序。如果有任何其他應用程序或軟件正在使用,並且我想從該應用程序或軟件中檢索任何值,那麼我作爲com對象將不會在那裏工作。所以請告訴我如何使用controlgettext comman。非常感謝 – ramji

+0

您正確使用它。問題是Excel停止尊重其WinAPI起源,並且不在控件中存儲文本。 – wOxxOm

+0

感謝@wOxxOm對你的好建議。還有一件事我想引入你的注意事項 - 正如你可以在下面的快照中看到的那樣。 http://i.imgur.com/ZRM21bl.png這個命令即使在這裏也不起作用。我不知道我在犯什麼錯誤。參考快照圖像我使用這些代碼來檢索圖像中的紅色框區域的文本-f1 :: ControlGetText,OutputVar,SysTreeView321,Collins COBUILD在CD-ROM上 - Lexicon 返回 f2 :: send%OutputVar % 退貨請幫助我。謝謝 – ramji