次の方法で共有


UI オートメーション イベントの概要

Note

このドキュメントは、System.Windows.Automation 名前空間で定義されているマネージド UI オートメーション クラスを使用する .NET Framework 開発者を対象としています。 UI オートメーションの最新情報については、Windows Automation API の「UI オートメーション」を参照してください。

Microsoft UI オートメーション イベント通知は、スクリーン リーダーやスクリーン拡大鏡などの支援技術にとっての重要な機能です。 これらの UI オートメーション クライアントは、UI で何かが発生したときに UI オートメーション プロバイダーが発生させるイベントを追跡し、その情報を使用してエンド ユーザーに通知します。

これらのイベントにサブスクライブしているクライアントがあるか、それともイベントをリッスンするクライアントがなく、サブスクライブしているクライアントがまったくないかに応じて、プロバイダー アプリケーションが選択的にイベントを発生させることで効率が向上します。

イベントの種類

UI オートメーションのイベントは、次のカテゴリに分類されます。

Event 説明
プロパティの変更 UI オートメーション要素のプロパティまたはコントロール パターンが変更された場合に発生します。 たとえば、クライアントがアプリケーションのチェック ボックス コントロールの監視を必要とする場合に、 ToggleState プロパティ上のプロパティの変更イベントをリッスンするよう登録できます。 チェック ボックス コントロールがオンまたはオフになったときに、プロバイダーがイベントを発生させ、クライアントが必要なアクションを実行できます。
要素のアクション UI の変更がエンド ユーザーまたはプログラムによるアクティビティに起因する場合に発生します。たとえば、ボタンがクリックされたり、InvokePattern を通じて呼び出される場合です。
構造の変更 UI オートメーション ツリーの構造が変更された場合に発生します。 構造は、新しい UI 項目が表示された場合、非表示になった場合、またはデスクトップから削除された場合に変更されます。
グローバル デスクトップの変更 ある要素から別の要素にフォーカスが移った場合やウィンドウが閉じられた場合など、クライアントにグローバルに関連するアクションが起こった場合に発生します。

イベントによっては、必ずしも UI の状態が変更されたことを意味しません。 たとえば、ユーザーが Tab キーを押して、テキスト入力フィールドに移動し、フィールドを更新するボタンをクリックした場合、ユーザーが実際にテキストを変更していない場合でも 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」を参照してください。

関連項目