分享方式:


UI 自動化事件概觀

注意

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

Microsoft UI 自動化事件通知是輔助技術的重要功能,例如螢幕助讀程式和螢幕放大鏡。 這些 UI 自動化用戶端會追蹤 UI 自動化提供者在 UI 發生情況時所引發的事件,並使用此資訊來通知使用者。

藉由允許提供者應用程式選擇性地引發事件來改善效率,取決於是否有用戶端訂閱那些事件或完全沒有,前提是沒有用戶端正在接聽任何事件。

事件的類型

Azure 自動化事件可分類如下。

事件 描述
屬性變更 UI 自動化元素或控制項模式上的屬性變更時引發。 例如,如果用戶端需要監視應用程式的核取方塊控制項,則它可以註冊,以接聽 ToggleState 屬性上的屬性變更事件。 當選取或取消選取核取方塊控制項時,提供者會引發事件,而且用戶端可視需要採取動作。
項目動作 UI 中的變更是由於使用者或程式設計活動而產生時引發;例如,當按一下按鈕或透過 InvokePattern 叫用按鈕時。
結構變更 UI 自動化樹狀結構的結構變更時引發。 當新的 UI 項目在桌面上可以看見、隱藏不見或遭到移除時,結構即會變更。
全域桌面變更 發生用戶端感興趣的全域動作時 (例如,焦點從一個項目移到另一個項目時,或當視窗關閉時) 引發。

某些事件並不一定表示 UI 的狀態已經變更。 例如,如果使用者切換至文字輸入欄位,然後按一下按鈕以更新欄位,則即使使用者實際上並未變更文字,也會引發 TextChangedEvent 。 在處理事件時,用戶端應用程式可能需要在採取動作之前檢查是否有任何實際變更。

即使 UI 的狀態未變更,也可能引發下列事件。

  • AutomationPropertyChangedEvent (取決於已變更的屬性)

  • ElementSelectedEvent

  • InvalidatedEvent

  • TextChangedEvent

UI 自動化事件識別碼

Microsoft UI 自動化事件是由 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 自動化系統而不是由提供者引發。
AutomationPropertyChangedEventArgs 包含項目或控制項模式之屬性值變更的相關資訊。
StructureChangedEventArgs 包含 UI 自動化樹狀結構中變更的相關資訊。
WindowClosedEventArgs 包含視窗關閉的相關資訊。

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

用來識別事件 AutomationEvent 的物件是提供者從 AutomationElementIdentifiers 中的欄位,以及控制模式識別碼類別 (例如 DockPatternIdentifiers) 所取得。 對等欄位是用戶端應用程式從 AutomationElement 中的欄位,以及控制模式類別 (例如 DockPattern) 所取得。

如需事件識別碼的清單,請參閱 UI Automation Events for Clients

另請參閱