UI 自动化属性概述

Microsoft UI 自动化提供程序公开UI 自动化元素的属性。 属性使客户端应用程序能够检索有关控件的信息。

UI 自动化公开两种不同类型的属性:自动化元素属性和控制模式属性。 自动化元素属性由一组公共属性(如 Name、AcceleratorKey 和 ClassName)组成,这些属性由所有UI 自动化元素公开,而不考虑控件类型。 大多数自动化元素属性都是静态值。

控件模式属性是由支持特定控件模式的控件公开的属性。 每个控件模式都有一组相应的控件模式属性,控件必须公开这些属性。 例如,支持 Grid 控件模式的控件公开 ColumnCount 和 RowCount 属性。 大多数控件模式属性都是动态值。

本主题包含以下各节:

属性标识符

每个属性都由称为属性标识符的 PROPERTYID 数值标识 ( ID) 。 提供程序和客户端在方法调用(如 IRawElementProviderAdviseEvents::AdviseEventAddedIUIAutomationElement::GetCachedPropertyValue )中使用数字 ID 来标识属性请求。 有关每个UI 自动化属性标识符的详细说明,包括每个属性的数据类型和默认值,请参阅属性标识符

属性值

所有属性都是只读的,但某些属性可以使用作用于控件的方法进行更改,例如 IDockProvider::SetDockPosition (提供程序) 或 IUIAutomationDockPattern::SetDockPosition (客户端) 。

有关检索属性值的信息,请参阅从 UI 自动化 元素检索属性

属性和事件

与 UI 自动化 中的属性密切相关的是属性更改事件的概念。 对于动态属性,客户端应用程序需要一种方法来了解属性值已更改,以便它可以更新其信息缓存或以其他某种方式响应新信息。 客户端可以注册以侦听任何属性上的属性更改事件。

当 UI 中的内容发生更改时,提供程序将引发事件。 例如,如果选择或清除检查框,则切换控件模式的提供程序实现将引发属性更改事件。 提供程序可以有选择地引发事件,具体取决于任何客户端是在侦听事件还是在侦听特定事件。

并非所有属性更改都会引发事件;这完全由元素的 UI 自动化提供程序实现所决定。 例如,当 Selection 属性更改时,列表框的标准代理提供程序不会引发属性更改事件。 在这种情况下,应用程序必须侦听 (UIA_SelectionItem_ElementSelectedEventId) 更改时引发的事件。

客户端通过订阅事件来侦听事件,如订阅UI 自动化事件中所述。 特别是对于属性更改事件,客户端必须实现 IUIAutomationPropertyChangedEventHandler 并将接口传递给 IUIAutomation::AddPropertyChangedEventHandlerIUIAutomation::AddPropertyChangedEventHandlerNativeArray

参考

GetCurrentPropertyValue

GetCurrentPropertyValueEx

GetCachedPropertyValue

GetCachedPropertyValueEx

概念性

UI 自动化控件模式概述

UI 自动化控件类型概述

UI 自动化事件概述