クライアントの UI オートメーション イベント

メモメモ

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

ここでは、UI オートメーション クライアントによる Microsoft UI Automation イベントの使用方法について説明します。

UI Automationを使用すると、クライアントは目的のイベントにサブスクライブできます。 この機能によって、システム内の UI 要素を継続的にポーリングし、情報、構造、状態が変更されていないかどうかを確認する必要が一部なくなるため、パフォーマンスが改善されます。

この機能は、定義されたスコープ内のイベントのみをリッスンするので、効率も向上させます。 たとえば、クライアントは、ツリー内のすべての UI Automation要素のフォーカス変更イベント、または 1 つだけの要素とその子孫のフォーカス変更イベントをリッスンできます。

メモメモ

すべての可能なイベントが Microsoft UI Automation プロバイダーによって発生するという前提にはしないでください。たとえば、プロパティの変更のすべてが、Windows Forms コントロールおよび Win32 コントロールの標準のプロキシ プロバイダーによってイベントを発生させるとは限りません。

UI Automation イベントのより広範な説明については、「UI オートメーション イベントの概要」を参照してください。

このトピックは、次のセクションで構成されています。

  • イベントのサブスクライブ
  • 関連トピック

イベントのサブスクライブ

クライアント アプリケーションは、次のメソッドの 1 つを使用して、イベント ハンドラーを登録することで特定の種類のイベントにサブスクライブします。

メソッド

イベントの種類

イベント引数の種類

デリゲートの型

AddAutomationFocusChangedEventHandler

フォーカスの変更

AutomationFocusChangedEventArgs

AutomationFocusChangedEventHandler

AddAutomationPropertyChangedEventHandler

プロパティの変更

AutomationPropertyChangedEventArgs

AutomationPropertyChangedEventHandler

AddStructureChangedEventHandler

構造の変更

StructureChangedEventArgs

StructureChangedEventHandler

AddAutomationEventHandler

AutomationEvent により識別される他のすべてのイベント

AutomationEventArgs または WindowClosedEventArgs

AutomationEventHandler

メソッドを呼び出す前に、イベントを処理するデリゲート メソッドを作成する必要があります。 必要に応じて、さまざまな種類のイベントを単一のメソッドで処理し、このメソッドを表中のメソッドの 1 つの複数の呼び出しに渡すことができます。 たとえば、単一の AutomationEventHandler で、さまざまなイベントを EventId に従って別に処理するように設定できます。

メモメモ

ウィンドウ クローズ イベントを処理するには、WindowClosedEventArgs としてイベント ハンドラーに渡される引数の型をキャストします。ウィンドウの Microsoft UI Automation要素は有効ではなくなるため、sender パラメーターを使用して情報を取得することはできませんが、代わりに、GetRuntimeId を使用できます。

Caution メモ注意

アプリケーションが自身の UI からイベント受け取った場合は、そのアプリケーションの UI スレッドを使用してイベントのサブスクライブやサブスクライブの解除をしないでください。このような処理を行うと、予測不可能な動作を招く可能性があります。詳細については、「UI オートメーション スレッド処理の問題点」を参照してください。

シャットダウン時、またはアプリケーションで UI Automation イベントを受け取る必要がなくなったときは、UI オートメーション クライアントで次のメソッドの 1 つを呼び出す必要があります。

メソッド

説明

RemoveAutomationEventHandler

AddAutomationEventHandler を使用して登録されたイベント ハンドラーの登録を解除します。

RemoveAutomationFocusChangedEventHandler

AddAutomationFocusChangedEventHandler を使用して登録されたイベント ハンドラーの登録を解除します。

RemoveAutomationPropertyChangedEventHandler

AddAutomationPropertyChangedEventHandler を使用して登録されたイベント ハンドラーの登録を解除します。

RemoveAllEventHandlers

登録されたすべてのイベント ハンドラーの登録を解除します。

コード例については、「UI オートメーション イベントのサブスクライブ」を参照してください。

参照

処理手順

UI オートメーション イベントのサブスクライブ

TrackFocus Sample

概念

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

UI オートメーション プロパティの概要