从 UI 自动化 元素检索属性

IUIAutomationElement 对象的属性包含有关 UI 元素(通常是控件)的信息。 元素的属性是泛型的;也就是说,不是特定于控件类型的。 元素的特定于控件的属性由其控件模式接口公开。

Microsoft UI 自动化属性是只读的。 若要设置控件的属性,则必须使用相应的控件模式的方法。 例如,使用 IUIAutomationScrollPattern::Scroll 更改滚动窗口的位置值。

为了提高性能,可以在检索元素时缓存控件和控件模式的属性值。 有关详细信息,请参阅Caching UI 自动化属性和控件模式

本主题包含以下各节:

属性 ID

属性标识符在 Uiautomationclient.h 中定义。 它们用于在订阅属性更改事件、检索属性值和构造属性条件时指定属性。 属性标识符还标识调用 IUIAutomationPropertyChangedEventHandler::HandlePropertyChangedEvent 时已更改的属性。

有关UI 自动化属性标识符的列表,请参阅属性标识符

属性条件

属性 ID 用于构造用于查找UI 自动化元素的 IUIAutomationPropertyCondition 对象。 例如,你可能想要查找具有特定名称的元素或启用的所有控件。 每个属性条件指定属性标识符和属性必须匹配的值。

有关详细信息,请参阅以下参考主题:

检索属性

某些泛型属性和所有控件模式属性都可用作 IUIAutomationElement 或控件模式接口上的属性,并且可以使用访问器(如 IUIAutomationElement::CurrentNameCachedDockPosition)进行检索。

此外,可以使用下列方法之一检索除控件模式属性以外的任何当前或缓存属性 () :

这些方法提供略微更好的性能和对各种属性的访问权限。 但是,值在 VARIANT 结构中返回,而各个属性访问器会将该值强制转换为适当的类型。

默认属性值

如果UI 自动化提供程序未实现属性,UI 自动化可以提供默认值。 例如,如果控件的提供程序不支持由UIA_HelpTextPropertyId标识的属性,则UI 自动化返回空字符串。 同样,如果提供程序不支持由UIA_IsDockPatternAvailablePropertyId标识的属性,UI 自动化返回 FALSE

IUIAutomationElement::GetCurrentPropertyValueGetCurrentPropertyValueEx (和类似方法对) 之间的差异是,“Ex”方法可以指定不返回默认值。 在这种情况下,返回值是一个特殊的唯一常量,指示不支持该属性。 在接收此值时,应用程序可以提供自己的值,或者只是忽略该属性。

概念性

UI 自动化属性概述

属性标识符