2011-07-07 81 views
0

我想知道如何讀取沒有HWND的控件的文本。例如,office 2007中的打印對話框在其所有控件上都沒有HWND(只有少數)。從無窗口控件獲取文本

有無論如何從這些控件中獲取文本? 我相信他們只是簡單地畫在窗口上,用HITTEST做出反應,但我不確定,所以我問你們:-)。

感謝您的幫助!

回答

2

通常,沒有保證的方式來做到這一點。但是,您可以使用IAccessible interface獲取文本(以及有關控件的其他信息)。大多數Microsoft產品在大多數UI元素上都實現了此界面:這是殘障人士使用的屏幕閱讀器的工作原理

+0

謝謝! IAccessible界面聽起來很有趣! :-) – TCS

+1

請務必查看Windows SDK的「Inspect」工具,以便隨時查看 - 您可以將它指向屏幕上的某個元素,並且它會轉儲從IAccessible獲得的任何信息。通常,您使用API​​ AccessibleObjectFromPoint或AccessibleObjectFromWindow獲取初始IAccessible,然後從那裏遍歷樹,隨時獲取屬性。 – BrendanMcK

1

對於通用無窗控制,您可以假設的只是文本僅作爲屏幕上的像素存在,只有閱讀它的方式是使用OCR。

如果你可以瞭解你想要檢查的具體控件的詳細信息,那麼你可能會發現該窗口控件都有代表其處理消息的父窗口或控件具有一個COM對象,你可以操縱,或者該控件授予Windows可訪問性API。如果你不瞭解控制的其他內容,那麼你所擁有的只是像素。