UI 自動化事件概觀
注意事項 |
---|
這份文件適用於想要使用 System.Windows.Automation 命名空間中定義之 Managed UI Automation 類別的 .NET Framework 開發人員。如需 UI Automation 的最新資訊,請參閱 Windows Automation API:使用者介面自動化 (英文)。 |
Microsoft UI Automation事件通知是輔助技術 (例如螢幕助讀員和螢幕放大鏡) 的主要功能。 當 UI 中發生某個事件並使用資訊通知使用者時,這些 UI 自動化用戶端便會追蹤 UI 自動化提供者所引發的事件。
可藉由讓提供者應用程式選擇性地引發事件來改善效率,但這需視是否有任何用戶端訂閱那些事件,如果沒有用戶端接聽任何事件,則無法改善效率。
這個主題包含下列章節。
- 事件的類型
- UI 自動化事件識別項
- UI 自動化事件引數
- 相關主題
事件的類型
UI Automation事件可以分類如下:
事件 |
說明 |
---|---|
屬性變更 |
當 UI Automation項目或控制項模式變更時進行引發。 例如,如果用戶端需要監控應用程式的核取方塊控制項,則可以註冊接聽 ToggleState 屬性的屬性變更事件。 核取或未核取盒取方塊控制項時,提供者都會引發事件,而用戶端則可視需要做出反應。 |
項目動作 |
如果 UI 中的變更肇因於使用者或程式設計活動,例如,按下按鈕或透過 InvokePattern 叫用,則會引發此動作。 |
結構變更 |
UI Automation樹狀目錄變更時,會引發此動作。 當新的 UI 項目變為可見、隱藏或從桌面移除時,結構便會改變。 |
全域桌面變更 |
如果發生用戶端適用的全域動作,例如,焦點從一個項目轉移到另一個,或是視窗關閉時,則會引發此動作。 |
某些事件並不一定代表 UI 的狀態已經變更。 例如,如果使用者轉換為文字輸入欄位,然後按一下按鈕更新欄位,如此一來,即使使用者並未實際變更文字,也會引發 TextChangedEvent。 處理事件時,用戶端應用程式可能必須檢查是否所有項目都實際進行過變更,才可以執行動作。
即使 UI 狀態並未變更,也會引發下列事件。
AutomationPropertyChangedEvent (會視已變更的屬性而定)
ElementSelectedEvent
InvalidatedEvent
TextChangedEvent
UI 自動化事件識別項
Microsoft UI Automation事件是由 AutomationEvent 物件所識別。 Id 屬性包含可唯一識別該種類事件的值。
下表中會提供 Id 可能的值和事件引數所使用的類型。 請注意,用戶端和提供者使用的識別項是不同類別的相同名稱欄位。
UI 自動化事件引數
下列類別包含事件引數。
類別 |
說明 |
---|---|
包含非同步載入內容 (包含載入完成的百分比) 的詳細資訊。 |
|
包含不需要額外資料之簡單事件的詳細資訊。 |
|
包含輸入焦點從一個項目變更為另一個項目的詳細資訊。 UI Automation系統 (而非由提供者) 所引發這個類型的事件。 |
|
包含項目或控制項模式屬性值變更的詳細資訊。 |
|
包含 UI Automation樹狀目錄中變更的詳細資訊。 |
|
包含關於視窗關閉的詳細資訊。 |
所有事件引數類別都包含 EventId 成員。 這個識別項會包含在 AutomationEvent 內。
用於識別事件的 AutomationEvent 物件會由 AutomationElementIdentifiers 中欄位的提供者和控制項模式識別項類別 (例如 DockPatternIdentifiers) 取得。 對等欄位會由 AutomationElement 欄位中的用戶端應用程式和控制項模式類別 (例如 DockPattern) 取得。
如需事件識別項的清單,請參閱用戶端的 UI 自動化事件。