2011-05-30 60 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