用戶端的 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 自動化事件概觀。
這個主題包含下列章節。
- 訂閱事件
- 相關主題
訂閱事件
用戶端應用程式可使用下列其中一個方法,以註冊事件處理常式來訂閱特定類型的事件。
方法 |
事件型別 |
事件引數類型 |
委派型別 |
---|---|---|---|
焦點變更 |
|||
屬性變更 |
|||
結構變更 |
|||
所有其他事件,由 AutomationEvent 識別 |
在呼叫方法之前,您必須建立委派方法來處理事件。 如果想要的話,您可以在單一方法中處理不同類型的事件,然後將此方法傳遞到表中其中一個方法的多個呼叫。 例如,您可以設定單一 AutomationEventHandler,然後根據 EventId 以不同方式處理各種事件。
注意事項 |
---|
若要處理視窗關閉事件,請將傳遞到事件處理常式的引數型別轉換為 WindowClosedEventArgs。由於視窗的 Microsoft UI Automation項目不再有效,因此您無法使用 sender 參數擷取資訊,請改用 GetRuntimeId。 |
警告 |
---|
如果您的應用程式可能從本身的 UI 接收事件,請不要使用應用程式的 UI 執行緒訂閱或取消訂閱事件。這麼做可能會導致無法預期的行為。如需詳細資訊,請參閱 UI 自動化執行緒問題。 |
當關機或 UI Automation事件不再與應用程式有關時,UI 自動化用戶端應該呼叫下列其中一個方法:
方法 |
說明 |
---|---|
移除註冊利用 AddAutomationEventHandler 所註冊的事件處理常式。 |
|
移除註冊利用 AddAutomationFocusChangedEventHandler 所註冊的事件處理常式。 |
|
移除註冊利用 AddAutomationPropertyChangedEventHandler 所註冊的事件處理常式。 |
|
移除註冊所有已註冊的事件處理常式。 |
如需範例程式碼,請參閱訂閱 UI 自動化事件。