共用方式為


用戶端的 UI 自動化事件

注意事項注意事項

這份文件適用於想要使用 System.Windows.Automation 命名空間中定義之 Managed UI Automation 類別的 .NET Framework 開發人員。如需 UI Automation 的最新資訊,請參閱 Windows Automation API:使用者介面自動化 (英文)。

本主題說明 UI 自動化用戶端如何使用 Microsoft UI Automation事件。

UI Automation可讓用戶端訂閱所需的事件。 這將有助於改善效能,因為如此就無須不斷地輪詢系統中所有 UI 項目來查看是否有任何資訊、結構或狀態變更。

此外,由於只接聽定義範圍內的事件,也能夠改善效率。 例如,用戶端可以接聽樹狀目錄中所有 UI Automation項目的焦點變更事件,或只接聽某個項目及其子代 (Descendant) 的焦點變更事件。

注意事項注意事項

請勿假設所有可能的事件都是由 Microsoft UI Automation提供者所引發。例如,屬性變更不一定都會讓 Windows Forms 和 Win32 控制項的標準 Proxy 提供者引發事件。

如需 UI Automation事件的概觀,請參閱 UI 自動化事件概觀

這個主題包含下列章節。

  • 訂閱事件
  • 相關主題

訂閱事件

用戶端應用程式可使用下列其中一個方法,以註冊事件處理常式來訂閱特定類型的事件。

方法

事件型別

事件引數類型

委派型別

AddAutomationFocusChangedEventHandler

焦點變更

AutomationFocusChangedEventArgs

AutomationFocusChangedEventHandler

AddAutomationPropertyChangedEventHandler

屬性變更

AutomationPropertyChangedEventArgs

AutomationPropertyChangedEventHandler

AddStructureChangedEventHandler

結構變更

StructureChangedEventArgs

StructureChangedEventHandler

AddAutomationEventHandler

所有其他事件,由 AutomationEvent 識別

AutomationEventArgsWindowClosedEventArgs

AutomationEventHandler

在呼叫方法之前,您必須建立委派方法來處理事件。 如果想要的話,您可以在單一方法中處理不同類型的事件,然後將此方法傳遞到表中其中一個方法的多個呼叫。 例如,您可以設定單一 AutomationEventHandler,然後根據 EventId 以不同方式處理各種事件。

注意事項注意事項

若要處理視窗關閉事件,請將傳遞到事件處理常式的引數型別轉換為 WindowClosedEventArgs。由於視窗的 Microsoft UI Automation項目不再有效,因此您無法使用 sender 參數擷取資訊,請改用 GetRuntimeId

注意事項警告

如果您的應用程式可能從本身的 UI 接收事件,請不要使用應用程式的 UI 執行緒訂閱或取消訂閱事件。這麼做可能會導致無法預期的行為。如需詳細資訊,請參閱 UI 自動化執行緒問題

當關機或 UI Automation事件不再與應用程式有關時,UI 自動化用戶端應該呼叫下列其中一個方法:

方法

說明

RemoveAutomationEventHandler

移除註冊利用 AddAutomationEventHandler 所註冊的事件處理常式。

RemoveAutomationFocusChangedEventHandler

移除註冊利用 AddAutomationFocusChangedEventHandler 所註冊的事件處理常式。

RemoveAutomationPropertyChangedEventHandler

移除註冊利用 AddAutomationPropertyChangedEventHandler 所註冊的事件處理常式。

RemoveAllEventHandlers

移除註冊所有已註冊的事件處理常式。

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

請參閱

工作

訂閱 UI 自動化事件

TrackFocus Sample

概念

UI 自動化事件概觀

UI 自動化屬性概觀