2011-05-30 28 views
1

是否有任何方式(Win32API或其他)從任何類型的窗口獲取文本?我可以得到活動窗口的HWND,但調用發送WM_GETTEXT消息並不總是給我的文本(MS Word是一個很好的例子)。
我試圖做出一個通用的拼寫檢查器,從任何應用程序,用戶按熱鍵組合並獲取更正到他的文本。
如果我想要整個文本,只選擇文本,或者說光標所在的單詞,它會不同嗎?
我可以在c,C++或c#中使用庫或Win32API或其他任何東西來接受答案。如果有解決方案,但只有其他一些編程語言(不可能只能在Delphi中完成,而不是在API中完成),我也可以管理它。從任何類型的文件中獲取文本

回答

1

如果不引用特定於應用程序的API,您將無法做到這一點。不同的應用程序處理文本的方式不同

例如,在記事本中,文本只是Windows API可以檢索的多行文本框中的字符串。

但是,Word會在內部處理文本並將顯示器呈現爲圖像。所有Windows API知道的是由Word呈現的位圖。 Windows API無法獲取組成文本的ASCII/Unicode字符。爲此,您需要使用Word的API。許多其他應用程序也會出現相同的問題。

4

我建議你看一看在UI Automation API,這就是你會找到最好的,因爲它是專爲這種用法,而忘記了原始低級的OLE」的Windows API :-)

我引述介紹:

UI自動化提供程序 訪問大多數用戶界面(UI),在桌面上 元素,使 輔助技術產品,如 屏幕讀者提供有關UI信息 最終用戶和 通過 標準輸入以外的方式操縱UI。 UI Automation還允許自動測試腳本 與UI進行交互。

goot的開始是嘗試UISpy tool。在編寫任何代碼之前,它將幫助檢查您能夠以編程方式查找的信息類型,這至少可以確保您不會浪費您的時間。

這不是那麼容易找到,這裏是一個鏈接:http://andrewtokeley.net/archive/2009/09/15/uispy-ndash-download-it-here.aspx

+0

謝謝,但UISpy嘗試後,我無法得到的文本,所以我認爲它不會幫助我。 – baruch 2011-06-01 08:27:10