用戶端的 UI 自動化事件

注意

本文件適用對象為 .NET Framework 開發人員,其想要使用 System.Windows.Automation 命名空間中定義的受控 UI 自動化類別。 如需 UI 自動化的最新資訊,請參閱 Windows 自動化 API:UI 自動化

本主題描述 UI 自動化用戶端如何使用 Microsoft UI 自動化事件。

UI 自動化允許用戶端訂閱感興趣的事件。 這項功能會提高效能,因為不必持續輪詢系統中的所有 UI 元素,以查看是否有任何資訊、結構或狀態變更。

同時也因為能夠只接聽定義範圍內的事件,而改善效率。 例如,用戶端可以接聽樹狀結構中所有 UI 自動化元素上的焦點變更事件,或是只接聽一個元素及其子系上的焦點變更事件。

注意

請勿假設所有可能的事件都由 Microsoft UI 自動化提供者引發。 例如,並非所有的屬性變更都會導致 Windows Forms 和 Win32 控制項的標準 Proxy 提供者引發事件。

如需 UI 自動化事件的廣泛檢視,請參閱 UI 自動化事件概觀

訂閱事件

用戶端應用程式藉由使用下列方法之一註冊事件處理常式,來訂閱特定種類的事件。

方法 事件類型 事件引數類型 委派類型
AddAutomationFocusChangedEventHandler 焦點變更 AutomationFocusChangedEventArgs AutomationFocusChangedEventHandler
AddAutomationPropertyChangedEventHandler 屬性變更 AutomationPropertyChangedEventArgs AutomationPropertyChangedEventHandler
AddStructureChangedEventHandler 結構變更 StructureChangedEventArgs StructureChangedEventHandler
AddAutomationEventHandler 所有其他事件,由 AutomationEvent 所識別 AutomationEventArgsWindowClosedEventArgs AutomationEventHandler

在呼叫方法之前,您必須建立委派方法來處理事件。 您想要的話也可以在單一方法中處理不同類型的事件,並在對資料中其一個方法的多次呼叫裡傳遞此方法。 例如,可以設定單一 AutomationEventHandler,根據 EventId 以不同的方式來處理各種事件。

注意

若要處理視窗關閉事件,將傳遞給事件處理常式的引數類型轉型為 WindowClosedEventArgs。 由於視窗的 Microsoft UI 自動化元素不再有效,因此您無法使用 sender 參數來擷取資訊,請改用 GetRuntimeId

警告

如果您的應用程式可能會從本身的 UI 接收事件,請勿使用您應用程式的 UI 執行緒來訂閱或取消訂閱事件。 這樣可能會導致無法預期的行為。 如需詳細資訊,請參閱 UI Automation Threading Issues

關機時或當應用程式不再對 UI 自動化事件感興趣時,UI 自動化用戶端應該呼叫下列其中一種方法。

方法 描述
RemoveAutomationEventHandler 移除註冊使用 AddAutomationEventHandler 註冊的事件處理常式。
RemoveAutomationFocusChangedEventHandler 移除註冊使用 AddAutomationFocusChangedEventHandler 註冊的事件處理常式。
RemoveAutomationPropertyChangedEventHandler 移除註冊使用 AddAutomationPropertyChangedEventHandler 註冊的事件處理常式。
RemoveAllEventHandlers 移除註冊所有已註冊的事件處理常式。

如需範例程式碼,請參閱訂閱 UI 自動化事件

另請參閱