0

我需要从 Windows 操作系统中的另一个程序中使用“UIautomation”技术获取 UIelements。一些程序具有用于内容呈现的“类似chrome”的浏览器。方法是获取元素(如 c# AutomationElement.FromPoint / FindAll)返回具有类名“Chrome_RenderWidgetHostHWND”和名称如“Chrome 旧版窗口”的浏览器元素。但我需要该浏览器中的内容元素。

我发现,程序“Accessibility Insights”可以做到!

  1. 运行应用程序,例如“Microsoft Teams”
  2. 运行“辅助功能洞察”
  3. 在“Microsoft Teams”上移动鼠标,我们得到“Chrome Legacy Window”
  4. 在目标程序(“Microsoft Teams”)上的任何鼠标单击(左/右)后会引发重建 UI 树
  5. 然后 UIautomation 技术可以获取浏览器中所有的内部 UI 元素。

“Accessibility Insights”源代码是https://github.com/microsoft/accessibility-insights-windows 我非常仔细地研究了它,但没有找到提供重建(或初始化?)内部 UI 元素的代码。

任何人都可以帮助我吗?我应该做些什么来赢得我的任务 - 在 Windows 操作系统上的另一个程序中获取类似 chrome 的浏览器中的内部 UI 元素?

如果你读到最后,谢谢

4

1 回答 1

0

适用于 Windows 的 Accessibility Insights 不直接与 UI 自动化系统交互。它建立在 Axe.Windows(源代码)之上,它查询和公开 UI 自动化属性。在您所描述的情况下,Axe.Windows 正在遍历 UI 自动化树以响应来自 UI 自动化框架的UIA_AutomationFocusChangedEventId消息。该通知由 FocusTracker.cs 的onFocusChangedEventForSelectingElement方法处理。希望这足以让你开始。

--Dave Tryon(无障碍洞察团队)

于 2020-10-17T01:00:50.500 回答