共用方式為


用戶端的 UI 自動化事件

備註

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

本主題描述 UI 自動化客戶端如何使用 Microsoft 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 Automation 元素不再有效,所以您無法使用 sender 參數來擷取資訊。請改用 GetRuntimeId

謹慎

如果您的應用程式可能會從自己的UI接收事件,請勿使用應用程式的UI線程來訂閱事件,或取消訂閱。 這樣做可能會導致無法預期的行為。 如需詳細資訊,請參閱 UI自動化線程問題

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

方法 說明
RemoveAutomationEventHandler 取消註冊使用 AddAutomationEventHandler註冊的事件處理程式。
RemoveAutomationFocusChangedEventHandler 取消註冊使用 AddAutomationFocusChangedEventHandler註冊的事件處理程式。
RemoveAutomationPropertyChangedEventHandler 取消註冊使用 AddAutomationPropertyChangedEventHandler註冊的事件處理程式。
RemoveAllEventHandlers 取消註冊所有已註冊的事件處理程式。

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

另請參閱