是否可以获得包括非UI自动化元素的任何窗口的选定文本

本文关键字:任何 窗口 文本 元素 自动化 UI 包括非 是否 | 更新日期: 2023-09-27 18:21:58

是否可以获取任何包含非UI自动化元素的窗口的选定文本?我希望能够获得任何流程的当前焦点元素的当前内容的选定文本。

我见过使用UI自动化来实现这一点的各种例子,但这只适用于某些最近在.NET中开发的应用程序。我需要能够获取任何窗口的文本。

我记得有一段时间,一个表现得像字典的应用程序,你可以在Windows中的任何地方用鼠标悬停在一些文本上,它会显示一个带有定义的工具提示。这可以在C#中实现吗。NET?

我一直在使用WinSpy检查窗口的内容,该窗口似乎不适用于UIA,ApplicationId显示为空或"。我猜UIA不支持这个特定的元素。我还注意到,当我使用Notepad++进行测试时,它使用了Scintilla,它似乎也不能与UIA一起使用。

也许如果有人能用其他方法展示一种可靠的方法,我可以在我的应用程序中使用混合方法。使用UIA框架,如果这没有产生结果,那么它将返回到其他方法。

是否可以获得包括非UI自动化元素的任何窗口的选定文本

实现这一点的一个简单方法是将CTRL + C键代码发送到选定的窗口,然后您可以在剪贴板中找到选定的文本。这很容易实现。请参阅此处以将密钥发送到其他进程,并参阅此处以读取剪贴板。缺点是您会明显丢失剪贴板内容。如果你想寻找一个更可靠的解决方案,请检查这个问题。