共用方式為


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 可能的值和事件引數所使用的類型。 請注意,用戶端和提供者使用的識別項是不同類別的相同名稱欄位。

用戶端識別項

提供者識別項

事件引數類型

AutomationElement.AsyncContentLoadedEvent

AutomationElementIdentifiers.AsyncContentLoadedEvent

AsyncContentLoadedEventArgs

SelectionItemPattern.ElementAddedToSelectionEvent

SelectionItemPattern.ElementRemovedFromSelectionEvent

SelectionItemPattern.ElementSelectedEvent

SelectionPattern.InvalidatedEvent

InvokePattern.InvokedEvent

AutomationElement.LayoutInvalidatedEvent

AutomationElement.MenuClosedEvent

AutomationElement.MenuOpenedEvent

TextPattern.TextChangedEvent

TextPattern.TextSelectionChangedEvent

AutomationElement.ToolTipClosedEvent

AutomationElement.ToolTipOpenedEvent

WindowPattern.WindowOpenedEvent

SelectionItemPatternIdentifiers.ElementAddedToSelectionEvent

SelectionItemPatternIdentifiers.ElementRemovedFromSelectionEvent

SelectionItemPatternIdentifiers.ElementSelectedEvent

SelectionPatternIdentifiers.InvalidatedEvent

InvokePatternIdentifiers.InvokedEvent

AutomationElementIdentifiers.LayoutInvalidatedEvent

AutomationElementIdentifiers.MenuClosedEvent

AutomationElementIdentifiers.MenuOpenedEvent

TextPatternIdentifiers.TextChangedEvent

TextPatternIdentifiers.TextSelectionChangedEvent

AutomationElementIdentifiers.ToolTipClosedEvent

AutomationElementIdentifiers.ToolTipOpenedEvent

WindowPatternIdentifiers.WindowOpenedEvent

AutomationEventArgs

AutomationElement.AutomationFocusChangedEvent

AutomationElementIdentifiers.AutomationFocusChangedEvent

AutomationFocusChangedEventArgs

AutomationElement.AutomationPropertyChangedEvent

AutomationElementIdentifiers.AutomationPropertyChangedEvent

AutomationPropertyChangedEventArgs

AutomationElement.StructureChangedEvent

AutomationElementIdentifiers.StructureChangedEvent

StructureChangedEventArgs

WindowPattern.WindowClosedEvent

WindowPatternIdentifiers.WindowClosedEvent

WindowClosedEventArgs

UI 自動化事件引數

下列類別包含事件引數。

類別

說明

AsyncContentLoadedEventArgs

包含非同步載入內容 (包含載入完成的百分比) 的詳細資訊。

AutomationEventArgs

包含不需要額外資料之簡單事件的詳細資訊。

AutomationFocusChangedEventArgs

包含輸入焦點從一個項目變更為另一個項目的詳細資訊。 UI Automation系統 (而非由提供者) 所引發這個類型的事件。

AutomationPropertyChangedEventArgs

包含項目或控制項模式屬性值變更的詳細資訊。

StructureChangedEventArgs

包含 UI Automation樹狀目錄中變更的詳細資訊。

WindowClosedEventArgs

包含關於視窗關閉的詳細資訊。

所有事件引數類別都包含 EventId 成員。 這個識別項會包含在 AutomationEvent 內。

用於識別事件的 AutomationEvent 物件會由 AutomationElementIdentifiers 中欄位的提供者和控制項模式識別項類別 (例如 DockPatternIdentifiers) 取得。 對等欄位會由 AutomationElement 欄位中的用戶端應用程式和控制項模式類別 (例如 DockPattern) 取得。

如需事件識別項的清單,請參閱用戶端的 UI 自動化事件

請參閱

工作

訂閱 UI 自動化事件

概念

用戶端的 UI 自動化事件

伺服器端 UI 自動化提供者實作