UI 自动化属性概述

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

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

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

本主题包含以下各节:

属性标识符

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

属性值

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

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

属性和事件

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

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

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

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

引用

GetCurrentPropertyValue

GetCurrentPropertyValueEx

GetCachedPropertyValue

GetCachedPropertyValueEx

Conceptual

UI 自动化控件模式概述

UI 自动化控件类型概述

UI 自动化事件概述