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

メモメモ

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

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 オートメーション プロバイダーの実装