UI 自动化属性概述
Microsoft UI 自动化提供程序公开UI 自动化元素的属性。 属性使客户端应用程序能够检索有关控件的信息。
UI 自动化公开两种不同类型的属性:自动化元素属性和控件模式属性。 自动化元素属性由一组常见的属性(如 Name、AcceleratorKey 和 ClassName)组成,这些属性由所有UI 自动化元素公开,而不管控件类型如何。 大多数自动化元素属性都是静态值。
控件模式属性是由支持特定控件模式的控件公开的。 每个控件模式都有一组相应的控件模式属性,控件必须公开这些属性。 例如,支持 Grid 控件模式的控件公开 ColumnCount 和 RowCount 属性。 大多数控件模式属性都是动态值。
本主题包含以下各节:
属性标识符
每个属性都由一个名为属性标识符(ID)的 PROPERTYID 数值标识。 提供程序和客户端在方法调用中使用数值 ID,例如 IRawElementProviderAdviseEvents::AdviseEventAdded 和 IUIAutomationElement::GetCachedPropertyValue 来标识属性请求。 有关每个UI 自动化属性标识符的详细说明,包括每个属性的数据类型和默认值,请参阅属性标识符。
属性值
所有属性都是只读的,尽管可以使用对控件执行操作的方法(如 IDockProvider::SetDockPosition(提供程序)或 IUIAutomationDockPattern::SetDockPosition(客户端)来更改某些属性。
有关检索属性值的信息,请参阅从 UI 自动化 Elements 检索属性。
属性和事件
与UI 自动化中的属性密切相关的是属性更改事件的概念。 对于动态属性,客户端应用程序需要一种方法来知道属性值已更改,以便它可以更新其信息缓存或以其他方式响应新信息。 客户端可以注册以侦听任何属性上的属性更改事件。
当 UI 中的内容发生更改时,提供程序将引发事件。 例如,如果选中或清除了复选框,则切换控件模式的提供程序实现将引发属性更改事件。 提供程序可以有选择地引发事件,具体取决于任何客户端是在侦听事件还是在侦听特定事件。
并非所有属性更改都会引发事件;这完全由元素的 UI 自动化提供程序实现所决定。 例如,当 Selection 属性更改时,列表框的标准代理提供程序不会引发属性更改事件。 在这种情况下,应用程序必须侦听选择更改时引发的事件(UIA_SelectionItem_ElementSelectedEventId)。
客户端通过订阅事件来侦听事件,如订阅UI 自动化事件中所述。 特别是对于属性更改的事件,客户端必须实现 IUIAutomationPropertyChangedEventHandler 并将接口传递给 IUIAutomation::AddPropertyChangedEventHandler 或 IUIAutomation::AddPropertyChangedEventHandlerNativeArray。
相关主题
-
引用
-
Conceptual