次の方法で共有


Client-Side UI オートメーション プロバイダーの実装

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

Win32、Windows フォーム、Windows Presentation Foundation (WPF) など、いくつかの異なるユーザー インターフェイス (UI) フレームワークが Microsoft オペレーティング システム内で使用されています。 Microsoft UI オートメーションは、UI 要素に関する情報をクライアントに公開します。 ただし、UI オートメーション自体は、これらのフレームワークに存在するさまざまな種類のコントロールと、そこから情報を抽出するために必要な手法を認識していません。 代わりに、このタスクはプロバイダーと呼ばれるオブジェクトに任されます。 プロバイダーは、特定のコントロールから情報を抽出し、その情報を UI オートメーションに提供し、一貫した方法でクライアントに提示します。

プロバイダーは、サーバー側またはクライアント側に存在できます。 サーバー側プロバイダーは、コントロール自体によって実装されます。 WPF 要素は、UI オートメーションを念頭に置いて記述されたサードパーティ製コントロールと同様に、プロバイダーを実装します。

ただし、Win32 や Windows フォームなどの古いコントロールは、UI オートメーションを直接サポートしていません。 これらのコントロールは、代わりにクライアント プロセスに存在するプロバイダーによって提供され、クロスプロセス通信を使用してコントロールに関する情報を取得します。たとえば、コントロールとの間で Windows メッセージを監視します。 このようなクライアント側プロバイダーは、プロキシと呼ばれることもあります。

Windows Vista は、標準の Win32 コントロールと Windows フォーム コントロール用のプロバイダーを提供します。 さらに、フォールバック プロバイダーは、別のサーバー側プロバイダーまたはプロキシによって提供されていないが、Microsoft Active Accessibility の実装があるコントロールに対して部分的な UI オートメーションのサポートを提供します。 これらのプロバイダーはすべて自動的に読み込まれ、クライアント アプリケーションで使用できます。

Win32 コントロールと Windows フォーム コントロールのサポートの詳細については、「標準コントロールの UI オートメーションのサポート」を参照してください。

アプリケーションは、他のクライアント側プロバイダーを登録することもできます。

Client-Side プロバイダーの配布

UI オートメーションでは、マネージ コード アセンブリでクライアント側プロバイダーを検索することが想定されています。 このアセンブリ内の名前空間は、アセンブリと同じ名前にする必要があります。 たとえば、ContosoProxies.dll というアセンブリには ContosoProxies 名前空間が含まれます。 名前空間内に、 UIAutomationClientSideProviders クラスを作成します。 静的 ClientSideProviderDescriptionTable フィールドの実装で、プロバイダーを記述する ClientSideProviderDescription 構造体の配列を作成します。

Client-Side プロバイダーの登録と構成

ダイナミック リンク ライブラリ (DLL) のクライアント側プロバイダーは、 RegisterClientSideProviderAssemblyを呼び出すことによって読み込まれます。 プロバイダーを使用するためにクライアント アプリケーションでそれ以上の操作は必要ありません。

クライアント独自のコードで実装されたプロバイダーは、 RegisterClientSideProvidersを使用して登録されます。 このメソッドは、 ClientSideProviderDescription 構造体の配列を引数として受け取り、それぞれが次のプロパティを指定します。

  • プロバイダー オブジェクトを作成するコールバック関数。

  • プロバイダーが提供するコントロールのクラス名。

  • プロバイダーが提供するアプリケーションのイメージ名 (通常は実行可能ファイルの完全な名前)。

  • ターゲット アプリケーションで見つかったウィンドウ クラスに対するクラス名の照合方法を制御するフラグ。

最後の 2 つのパラメーターは省略可能です。 クライアントは、アプリケーションごとに異なるプロバイダーを使用する場合に、ターゲット アプリケーションのイメージ名を指定する場合があります。 たとえば、クライアントは、複数ビュー パターンをサポートする既知のアプリケーションの Win32 リスト ビュー コントロールに対して 1 つのプロバイダーを使用し、そうでない別の既知のアプリケーションでは同様のコントロールに使用する場合があります。

こちらも参照ください