【问题标题】:What is the best way to get all ui elements of a window?获取窗口的所有 ui 元素的最佳方法是什么?
【发布时间】:2014-05-25 15:07:48
【问题描述】:

我想获取一个窗口的所有 UI 元素的列表,以某种方式我可以在另一台 PC 上重新创建它们?目前我专注于 Windows,但多平台的答案将不胜感激。谢谢! (下面是我的意思)

【问题讨论】:

    标签: winapi user-interface ui-automation


    【解决方案1】:

    有几种方法可以去。

    选项 1:如果窗口是传统窗口,其中 UI 元素是子窗口(而不是无窗口控件),那么您可以使用 GetWindowEnumChildWindows 遍历给定窗口中的 UI 元素。然后,您必须检查这些窗口的属性,如窗口过程、窗口样式和窗口文本,以按照您的建议构建一个列表。您可能可以为所有标准控件使用此功能。问题是使它足够通用以处理所有事情。许多应用程序具有您的代码无法识别的自定义控件类型,或者它可能以不明显的方式布置它们。您也将无法处理使用无窗口控件的窗口。

    选项 2:您可以使用 UI Automation 遍历 UI 控件树。这就是屏​​幕阅读器等无障碍技术与应用程序交互的方式。

    【讨论】:

    • UI自动化可以看到无窗口控件吗?
    • @Dvidunis 是的,UI 自动化可以看到无窗口控件(假设无窗口框架实现了 UI 自动化)。例如,XAML、WPF 和 Trident (Internet Explorer) 都是实现 UI 自动化的无窗口框架示例。
    • @Dvidunis 此外,UI 自动化更适用于自定义窗口控件,例如拆分按钮(和其他更高级的控件)。
    • UI 自动化可以与 Java、Python、Chrome 应用程序一起使用吗?它可以检测到这些应用程序的控件吗?
    • @Prasad Honrao:Chrome——是的,主流浏览器都在 Windows 上完成了使无障碍 API 工作的工作,即使它们使用无窗口控件。对于 Java 和 Python 应用程序,我不知道。我想这取决于 UI 框架。
    猜你喜欢
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    相关资源
    最近更新 更多