从无窗口控件获取文本

Get text from a windowsless control

本文关键字:获取 取文本 控件 窗口      更新时间:2023-10-16

我想知道如何读取没有HWND的控件的文本。例如,office 2007中的打印对话框并没有在它的所有控件上(只有少数)设置HWND。

是否有办法从这些控件中获取文本?我相信他们只是简单地画在窗口上,并使用HITTEST反应,但我不确定,所以我问你们:-)。

谢谢你的帮助!

一般来说,没有保证的方法可以做到这一点。但是,您可以使用IAccessible接口获取文本(以及有关控件的其他信息)。大多数Microsoft产品在大多数UI元素上实现了这个接口:这就是残疾人屏幕阅读器的工作方式

对于一般的无窗口控件,您只能假设文本在屏幕上仅以像素形式存在,因此读取它的唯一方法是使用OCR。

如果你可以了解更多关于你想要检查的特定控件的信息,那么你可能会了解到无窗口控件有一个代表它处理消息的父窗口,或者控件有一个你可以操作的COM对象,或者控件遵循Windows可访问性API。如果你对这个控件一无所知,那么你就只有像素了。