UI オートメーション イベントの概要
更新 : 2007 年 11 月
Microsoft UI オートメーション イベント通知は、スクリーン リーダーやスクリーン拡大鏡といった支援テクノロジにとって重要な機能です。これらの UI オートメーション クライアントは、UI で何かが発生したときに UI オートメーション プロバイダによって発生するイベントを追跡し、その情報を利用してエンド ユーザーに通知します。
これらのイベントにサブスクライブしているクライアントがあるか、それともイベントをリッスンするクライアントがなく、サブスクライブしているクライアントがまったくないかに応じて、プロバイダ アプリケーションが選択的にイベントを発生させることで効率が向上します。
このトピックには次のセクションが含まれています。
- イベントの種類
- UI オートメーション イベント識別子
- UI オートメーション イベント引数
- 関連トピック
イベントの種類
UI オートメーション イベントは次のカテゴリに分かれます。
イベント |
説明 |
---|---|
プロパティの変更 |
UI オートメーション要素のプロパティまたはコントロール パターンが変更された場合に発生します。たとえば、クライアントがアプリケーションのチェック ボックス コントロールの監視を必要とする場合に、ToggleState プロパティ上のプロパティの変更イベントをリッスンするよう登録できます。チェック ボックス コントロールがオンまたはオフの場合、プロバイダはイベントを発生させ、クライアントは必要なアクションを実行できます。 |
要素のアクション |
UI の変更がエンド ユーザーまたはプログラムによるアクティビティに起因する場合に発生します。たとえば、ボタンがクリックされるか、InvokePattern を通じて呼び出される場合です。 |
構造の変更 |
UI オートメーション ツリーの構造体が変更された場合に発生します。構造が変更されるのは、デスクトップ上で新しい UI 項目が表示されたり、非表示になったり、除去されたりした場合です。 |
グローバル デスクトップの変更 |
ある要素から別の要素にフォーカスが移った場合やウィンドウが閉じられた場合など、クライアントをグローバルに対象とするアクションが取られた場合に発生します。 |
イベントによっては、必ずしも UI の状態が変更されたことを意味しません。たとえば、ユーザーがテキスト入力フィールドへのタブを操作し、フィールドを更新するボタンをクリックした場合、ユーザーが実際にテキストを変更していない場合でも TextChangedEvent が発生します。イベントを処理する際に、クライアント アプリケーションは、アクションが取られる前に実際に変更が行われたかどうかのチェックが必要となる場合があります。
次のイベントは、UI の状態が変更されていない場合でも発生する可能性があります。
AutomationPropertyChangedEvent (変更されたプロパティによって変わります)
ElementSelectedEvent
InvalidatedEvent
TextChangedEvent
UI オートメーション イベント識別子
Microsoft UI オートメーション イベントは、AutomationEvent オブジェクトによって識別されます。Id プロパティには、イベントの種類を一意に識別する値が含まれます。
Id に指定できる値と、イベント引数に使用する種類を次の表に示します。クライアントとプロバイダが使用する識別子は、異なるクラスで同じ名前のフィールドです。
UI オートメーション イベント引数
次のクラスは、イベント引数をカプセル化します。
クラス |
説明 |
---|---|
読み込みが完了した割合など、コンテンツの非同期読み込みに関する情報を格納します。 |
|
追加データを必要としない単純なイベントに関する情報を格納します。 |
|
ある要素から別の要素への入力フォーカスの変化に関する情報を格納します。この種類のイベントは、プロバイダではなく、UI オートメーション システムによって発生します。 |
|
要素のプロパティ値またはコントロール パターンの変更に関する情報を格納します。 |
|
UI オートメーション ツリーの変更に関する情報を格納します。 |
|
ウィンドウ クローズに関する情報を格納します。 |
すべてのイベント引数クラスには、EventId メンバが含まれます。この識別子は、AutomationEvent にカプセル化されます。
イベントを識別するために使用する AutomationEvent オブジェクトは、AutomationElementIdentifiers およびコントロール パターン識別子クラス (DockPatternIdentifiers など) のフィールドからプロバイダによって取得されます。等価のフィールドが AutomationElement およびコントロール パターン クラス (DockPattern など) のフィールドからクライアント アプリケーションによって取得されます。
イベント識別子の一覧については、「クライアントの UI オートメーション イベント」を参照してください。