如何在c#中获得特定过程的焦点元素

本文关键字:过程 焦点 元素 | 更新日期: 2023-09-27 18:22:46

我遇到了问题,我调用了一个进程,现在我想要它的焦点元素。

例如。我运行了一个在谷歌chrome中打开的程序www.google.com现在假设我想搜索"你好",据我所知,这样做的方法是获得键盘焦点元素,它将是google.com的文本框Process[] pr = Process.GetProcessesByName("chrome"); var target = pr[0];

如何在c#中获得特定过程的焦点元素

您的问题a有点模糊,所以我将尝试根据几种不同的解释给出几个指针:

1) 如果你所指的过程总是一个网站,你应该跳过屏幕抓取技术,比如@vulkanino提到的,直接获取网站的内容。如果你必须通过真实的浏览器(而不是原始HTML本身)解析网站,你可以使用截屏,但请记住,并非所有计算机都使用相同的浏览器。

2) 如果您想要从正在运行的进程中筛选信息,那么(不幸的是)您没有像您期望的那样简单的API,其中Process pr对象包含您可以遍历的元素列表。这是因为该进程可能是用.NET/WinForms、.NET/WPF、C++/MFC或其他十几个工作方式非常不同的UI框架中的任何一个编写的。

我建议使用屏幕阅读器辅助功能框架,例如微软的UI Automation,它能够从许多常见应用程序的UI中提取文本。该功能的存在是为了帮助读取视线较暗的应用程序UI,但也可以用于屏幕抓取。