UI 自动化事件概述

注意注意

本文档的目标读者是欲使用 System.Windows.Automation 命名空间中定义的托管 UI Automation类的 .NET Framework 开发人员。有关 UI Automation的最新信息,请参见 Windows Automation API: UI Automation(Windows 自动化 API:UI 自动化)。

Microsoft UI Automation事件通知是辅助技术(如屏幕阅读器和屏幕放大镜)的主要功能。 当 UI 中发生某些情况时,这些 UI 自动化客户端跟踪 UI 自动化提供程序引发的事件,并使用该信息通知最终用户。

如果没有任何客户端侦听任何事件,那么可以通过允许提供程序应用程序有选择地引发事件来提高效率,具体取决于所有客户端是订阅了这些事件,还是根本没有订阅。

本主题包括下列各节。

  • 事件的类型
  • UI 自动化事件标识符
  • UI 自动化事件参数
  • 相关主题

事件的类型

UI Automation事件分属以下类别。

Event

说明

属性更改

当 UI Automation元素或控件模式上的属性更改时引发。 例如,如果客户端需要监视应用程序的复选框控件,则可注册以侦听 ToggleState 属性上的属性更改事件。 当选中或取消选中复选框控件时,提供程序将引发事件,且客户端可采取必要的操作。

元素操作

当 UI 更改因最终用户或编程活动而造成时引发,例如,单击按钮或通过 InvokePattern 调用按钮时。

结构更改

当 UI Automation的树结构更改时引发。 当新的 UI 项在桌面上可见、隐藏或从桌面上删除时,结构会发生更改。

全局桌面更改

当对客户端的全局焦点进行操作时引发,例如,焦点从一个元素转换到另一个元素,或窗口关闭时。

某些事件并不一定意味着 UI 的状态发生了变化。 例如,如果用户使用 Tab 键移动到文本输入字段,然后单击按钮以更新该字段,那么将引发 TextChangedEvent,即使用户实际上并没有更改文本也如此。 处理事件时,客户端应用程序可能需要先检查是否确实更改了内容,然后再采取操作。

即使 UI 的状态没有更改,也可能引发以下事件。

  • AutomationPropertyChangedEvent(取决于已更改的属性)

  • ElementSelectedEvent

  • InvalidatedEvent

  • TextChangedEvent

UI 自动化事件标识符

Microsoft UI Automation事件由 AutomationEvent 对象标识。 Id 属性中包含唯一标识该类事件的值。

下表列出了 Id 的可能值,以及用于事件参数的类型。 请注意,除了类不同之外,客户端和提供程序所用标识符的字段名称完全相同。

客户端标识符

提供程序标识符

事件参数类型

AutomationElement.AsyncContentLoadedEvent

AutomationElementIdentifiers.AsyncContentLoadedEvent

AsyncContentLoadedEventArgs

SelectionItemPattern.ElementAddedToSelectionEvent

SelectionItemPattern.ElementRemovedFromSelectionEvent

SelectionItemPattern.ElementSelectedEvent

SelectionPattern.InvalidatedEvent

InvokePattern.InvokedEvent

AutomationElement.LayoutInvalidatedEvent

AutomationElement.MenuClosedEvent

AutomationElement.MenuOpenedEvent

TextPattern.TextChangedEvent

TextPattern.TextSelectionChangedEvent

AutomationElement.ToolTipClosedEvent

AutomationElement.ToolTipOpenedEvent

WindowPattern.WindowOpenedEvent

SelectionItemPatternIdentifiers.ElementAddedToSelectionEvent

SelectionItemPatternIdentifiers.ElementRemovedFromSelectionEvent

SelectionItemPatternIdentifiers.ElementSelectedEvent

SelectionPatternIdentifiers.InvalidatedEvent

InvokePatternIdentifiers.InvokedEvent

AutomationElementIdentifiers.LayoutInvalidatedEvent

AutomationElementIdentifiers.MenuClosedEvent

AutomationElementIdentifiers.MenuOpenedEvent

TextPatternIdentifiers.TextChangedEvent

TextPatternIdentifiers.TextSelectionChangedEvent

AutomationElementIdentifiers.ToolTipClosedEvent

AutomationElementIdentifiers.ToolTipOpenedEvent

WindowPatternIdentifiers.WindowOpenedEvent

AutomationEventArgs

AutomationElement.AutomationFocusChangedEvent

AutomationElementIdentifiers.AutomationFocusChangedEvent

AutomationFocusChangedEventArgs

AutomationElement.AutomationPropertyChangedEvent

AutomationElementIdentifiers.AutomationPropertyChangedEvent

AutomationPropertyChangedEventArgs

AutomationElement.StructureChangedEvent

AutomationElementIdentifiers.StructureChangedEvent

StructureChangedEventArgs

WindowPattern.WindowClosedEvent

WindowPatternIdentifiers.WindowClosedEvent

WindowClosedEventArgs

UI 自动化事件参数

以下类封装事件参数。

说明

AsyncContentLoadedEventArgs

包含有关异步加载内容的信息,包括加载完成的百分比。

AutomationEventArgs

包含有关不需要额外数据的简单事件的信息。

AutomationFocusChangedEventArgs

包含有关输入焦点从一个元素更改到另一个元素的信息。 此类事件由 UI Automation系统,而不是提供程序引发。

AutomationPropertyChangedEventArgs

包含有关元素或控件模式的属性值更改的信息。

StructureChangedEventArgs

包含有关 UI Automation树更改的信息。

WindowClosedEventArgs

包含有关窗口关闭的信息。

所有事件参数类都包含一个 EventId 成员。 此标识符封装在 AutomationEvent 中。

提供程序从 AutomationElementIdentifiers 和控件模式标识符类(如 DockPatternIdentifiers)中的字段获取用于标识事件的 AutomationEvent 对象。 客户端应用程序从 AutomationElement 和控件模式类(如 DockPattern)中的字段获取等效的字段。

有关事件标识符的列表,请参见客户端的 UI 自动化事件

请参见

任务

订阅 UI 自动化事件

概念

客户端的 UI 自动化事件

服务器端 UI 自动化提供程序的实现