2011-07-07 84 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。如果你不了解控制的其他内容,那么你所拥有的只是像素。