次の方法で共有


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

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

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

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

イベントの種類

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

出来事 説明
プロパティの変更 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 オートメーション イベント」を参照してください。

こちらも参照ください