从UI 自动化元素检索属性
IUIAutomationElement 对象的属性包含有关 UI 元素(通常是控件)的信息。 元素的属性是泛型的;也就是说,不特定于控件类型。 元素的控件特定属性由其控件模式接口公开。
Microsoft UI 自动化属性是只读的。 若要设置控件的属性,则必须使用相应的控件模式的方法。 例如,使用 IUIAutomationScrollPattern::Scroll 更改滚动窗口的位置值。
为了提高性能,可以在检索元素时缓存控件和控件模式的属性值。 有关详细信息,请参阅缓存UI 自动化属性和控件模式。
本主题包含以下各节:
属性 ID
属性标识符在 Uiautomationclient.h 中定义。 订阅属性更改事件、检索属性值和构造属性条件时,它们用于指定属性。 属性标识符还标识在调用 IUIAutomationPropertyChangedEventHandler::HandlePropertyChangedEvent 时已更改的属性。
有关UI 自动化属性标识符的列表,请参阅属性标识符。
属性条件
属性 ID 用于构造 IUIAutomationPropertyCondition 对象,这些对象用于查找UI 自动化元素。 例如,你可能想要查找具有特定名称的元素,或启用的所有控件。 每个属性条件指定属性标识符和属性必须匹配的值。
有关详细信息,请参阅以下参考主题:
- IUIAutomation::CreatePropertyCondition
- IUIAutomation::CreatePropertyConditionEx
- IUIAutomationElement::FindFirst
- IUIAutomationElement::FindAll
检索属性
某些泛型属性和所有控件模式属性都可用作 IUIAutomationElement 或控件模式接口上的属性,并且可以使用访问器(例如 IUIAutomationElement::CurrentName 或 CachedDockPosition)进行检索。
此外,可以使用下列方法之一检索除控件模式属性以外的任何当前或缓存属性 () :
这些方法的性能略好一些,并且可以访问所有属性。 但是,值在 VARIANT 结构中返回,而单个属性访问器将值强制转换为适当的类型。
默认属性值
如果UI 自动化提供程序未实现属性,UI 自动化可以提供默认值。 例如,如果控件的提供程序不支持 UIA_HelpTextPropertyId 标识的属性,UI 自动化将返回一个空字符串。 同样,如果提供程序不支持 UIA_IsDockPatternAvailablePropertyId 标识的属性,UI 自动化返回 FALSE。
IUIAutomationElement::GetCurrentPropertyValue 和 GetCurrentPropertyValueEx (以及) 类似方法对之间的区别在于,“Ex”方法可以指定不返回任何默认值。 在这种情况下,返回值是一个特殊的唯一常量,表示不支持 属性。 在收到此值时,应用程序可以提供自己的值,或者直接忽略 属性。
相关主题
-
概念性