是否可以获取任何窗口的选定文本,包括非 UI 自动化元素? 我希望能够获取任何进程的当前焦点元素的当前内容的选定文本。
我见过使用 UI 自动化来执行此操作的各种示例,但这仅适用于某些似乎最近在 .NET 中开发的应用程序。我需要能够获取任何窗口的文本。
我记得不久前,一个应用程序的行为类似于字典,您可以将鼠标悬停在 Windows 中任意位置的某些文本上,它会显示一个带有定义的工具提示。这可以在 C# 和 .NET 中实现吗?
我一直在使用 WinSpy 检查窗口的内容,它似乎不适用于 UIA,并且 ApplicationId 显示为空或“”。我猜 UIA 不支持这个特定元素。我还注意到,当我使用 Notepad++ 进行测试时,它使用了 Scintilla,它似乎也不支持 UIA。
也许如果有人可以通过其他方法展示一种可靠的方法,我可以对我的应用程序使用混合方法。使用 UIA 框架,如果这没有产生结果,那么它会回落到其他一些方法。
最佳答案
实现此目的的一种简单方法是将 CTRL + C
键代码发送到选定的窗口,然后您可以在剪贴板中找到选定的文本。这很容易实现。参见 here用于向其他进程发送 key 和here读取剪贴板。缺点是您显然会丢失剪贴板内容。如果您搜索更可靠的解决方案 check this question .
关于c# - 是否可以获取任何窗口的选定文本,包括非 UI 自动化元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9047601/