c# - 是否可以获取任何窗口的选定文本,包括非 UI 自动化元素?

标签 c# winapi ui-automation microsoft-ui-automation

是否可以获取任何窗口的选定文本,包括非 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/

相关文章:

c - 为什么我的键盘记录器不起作用?

c++ - "hInstance"未定义。 C++ WIN32 APP

selenium-webdriver - 如何使用 Robot Framework 查找特定 html 元素的 css 样式属性?

automated-tests - UI 自动化白色框架 "NonComVisibleBaseClass was detected"异常

c# - 如何在 LINQ 表达式中对多个级别进行排序?

c# - ViewModel 或 Model 中的 ASP.NET MVC 验证?

c# - 至少一个对象必须实现 IComparable order by

c# - 将文本框绑定(bind)到 Listview GridViewColumn

c++ - 虚拟键码到 unicode 的映射受写入 std::cout 的影响?

ios - iOS UI 自动化可以执行应用程序代码吗?