クライアントの UI オートメーション イベント
更新 : 2007 年 11 月
ここでは、UI オートメーション クライアントによる Microsoft UI オートメーション イベントの使用方法について説明します。
UI オートメーションを使用すると、クライアントは目的のイベントにサブスクライブできます。この機能によって、システム内の UI 要素を継続的にポーリングし、情報、構造、状態が変更されていないかどうかを確認する必要が一部なくなるため、パフォーマンスが改善されます。
この機能は、定義されたスコープ内のイベントのみをリッスンするので、効率も向上させます。たとえば、クライアントは、ツリー内のすべての UI オートメーション要素のフォーカス変更イベント、または 1 つだけの要素とその子孫のフォーカス変更イベントをリッスンできます。
メモ : |
---|
すべての可能なイベントが Microsoft UI オートメーション プロバイダによって発生するという前提にはしないでください。たとえば、プロパティの変更のすべてが、Windows フォーム コントロールおよび Win32 コントロールの標準のプロキシ プロバイダによってイベントを発生させるとは限りません。 |
UI オートメーション イベントのより広範な説明については、「UI オートメーション イベントの概要」を参照してください。
このトピックには次のセクションが含まれています。
- イベントのサブスクライブ
- 関連トピック
イベントのサブスクライブ
クライアント アプリケーションは、次のメソッドの 1 つを使用して、イベント ハンドラを登録することで特定の種類のイベントにサブスクライブします。
メソッド |
イベントの種類 |
イベント引数の種類 |
デリゲートの型 |
---|---|---|---|
フォーカスの変更 |
|||
プロパティの変更 |
|||
構造の変更 |
|||
AutomationEvent により識別される他のすべてのイベント |
メソッドを呼び出す前に、イベントを処理するデリゲート メソッドを作成する必要があります。必要に応じて、さまざまな種類のイベントを単一のメソッドで処理し、このメソッドを表中のメソッドの 1 つの複数の呼び出しに渡すことができます。たとえば、単一の AutomationEventHandler で、さまざまなイベントを EventId に従って別に処理するように設定できます。
メモ : |
---|
ウィンドウ クローズ イベントを処理するには、WindowClosedEventArgs としてイベント ハンドラに渡される引数の型をキャストします。ウィンドウの Microsoft UI オートメーション要素は有効ではなくなるため、sender パラメータを使用して情報を取得することはできませんが、代わりに、GetRuntimeId を使用できます。 |
注意 : |
---|
アプリケーションが自身の UI からイベント受け取った場合は、そのアプリケーションの UI スレッドを使用してイベントのサブスクライブやサブスクライブの解除をしないでください。このような処理を行うと、予測不可能な動作を招く可能性があります。詳細については、「UI オートメーション スレッド処理の問題点」を参照してください。 |
シャットダウン時、またはアプリケーションで UI オートメーション イベントを受け取る必要がなくなったときは、UI オートメーション クライアントで次のメソッドの 1 つを呼び出す必要があります。
メソッド |
説明 |
---|---|
AddAutomationEventHandler を使用して登録されたイベント ハンドラの登録を解除します。 |
|
AddAutomationFocusChangedEventHandler を使用して登録されたイベント ハンドラの登録を解除します。 |
|
AddAutomationPropertyChangedEventHandler を使用して登録されたイベント ハンドラの登録を解除します。 |
|
登録されたすべてのイベント ハンドラの登録を解除します。 |
コード例については、「UI オートメーション イベントのサブスクライブ」を参照してください。