客户端的 UI 自动化事件
更新:2007 年 11 月
本主题介绍 UI 自动化客户端如何使用 Microsoft UI 自动化事件。
UI 自动化允许客户端订阅关注的事件。有了此功能,将不再需要频繁地轮询系统中的所有 UI 元素来确定是否更改了任何信息、结构或状态,从而提高了性能。
由于能够只侦听定义范围内的事件,因此效率也得到了提高。例如,客户端可以在树中的所有 UI 自动化元素上侦听焦点更改事件,也可以只在一个元素及其子代上侦听。
说明: |
---|
不要假定所有可能的事件都是由 Microsoft UI 自动化提供程序引发的。例如,并非所有属性更改都会导致 Windows 窗体 和 Win32 控件的标准代理提供程序引发事件。 |
要从更广泛的角度查看 UI 自动化事件,请参见 UI 自动化事件概述。
本主题包括下列各节。
- 订阅事件
- 相关主题
订阅事件
客户端应用程序通过使用以下方法之一注册事件处理程序,从而订阅特定种类的事件。
方法 |
事件类型 |
事件参数类型 |
委托类型 |
---|---|---|---|
焦点更改 |
|||
属性更改 |
|||
结构更改 |
|||
所有其他事件(由 AutomationEvent 标识) |
在调用方法之前,必须创建一个委托方法来处理事件。如果愿意,您可以在单一方法中处理不同种类的事件,并在多个调用中将此方法传递到表中的某个方法。例如,可以将单一 AutomationEventHandler 设置为依据 EventId 以不同的方式处理各种事件。
说明: |
---|
若要处理 window-closed 事件,请将传递到事件处理程序的参数类型转换为 WindowClosedEventArgs。由于窗口的 Microsoft UI 自动化元素不再有效,因此您无法使用 sender 参数来检索信息;请改用 GetRuntimeId。 |
警告: |
---|
如果应用程序可能从自己的 UI 中接收事件,请不要使用应用程序的 UI 线程来订阅或取消订阅事件。这样做可能会导致不可预知的行为。有关更多信息,请参见 UI 自动化线程处理问题。 |
在关机时,或者当应用程序不再关注 UI 自动化事件时,UI 自动化客户端应调用以下方法之一。
方法 |
说明 |
---|---|
通过使用 AddAutomationEventHandler 取消注册已注册的事件处理程序。 |
|
通过使用 AddAutomationFocusChangedEventHandler 取消注册已注册的事件处理程序。 |
|
通过使用 AddAutomationPropertyChangedEventHandler 取消注册已注册的事件处理程序。 |
|
取消注册所有已注册的事件处理程序。 |
有关示例代码,请参见订阅 UI 自动化事件。