Share via


クライアント側 UI オートメーション プロバイダーの実装

メモメモ

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

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

プロバイダーは、サーバー側とクライアント側のどちらにも配置できます。 サーバー側プロバイダーは、コントロール自体によって実装されます。 WPF 要素は、UI Automationで作成されたすべてのサードパーティ コントロールを考慮してプロバイダーを実装します。

ただし、Win32 や Windows Formsに含まれているコントロールなどの比較的古いコントロールは、UI Automationを直接サポートしていません。 これらのコントロールは、代わりにクライアント プロセス内のプロバイダーによって処理され、プロセス間通信を使用して、たとえば、コントロール間でのウィンドウ メッセージを監視することで、コントロールに関する情報を取得します。 このようなクライアント側プロバイダーは、プロキシと呼ばれることがあります。

Windows Vista には、Win32 および Windows Forms の標準のコントロール用のプロバイダーが用意されています。 さらに、サーバー側プロバイダーやプロキシで処理されないコントロールでも、Microsoft Active Accessibility が実装されているコントロールに対しては、代替プロバイダーが UI Automationの部分的なサポートを提供します。 これらすべてのプロバイダーは、自動的に読み込まれ、クライアント アプリケーションから使用できるようになります。

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

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

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

  • クライアント側プロバイダーを配布する
  • クライアント側プロバイダーを登録および構成する
  • 関連トピック

クライアント側プロバイダーを配布する

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

クライアント側プロバイダーを登録および構成する

dynamic-link library (DLL) 内のクライアント側プロバイダーは、RegisterClientSideProviderAssembly を呼び出すことで読み込まれます。 クライアント アプリケーションでは、プロバイダーを利用するために、それ以上のアクションは必要ありません。

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

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

  • プロバイダーが使用されるコントロールのクラス名。

  • プロバイダーが使用されるアプリケーションのイメージ名 (通常は実行可能ファイルの完全名)。

  • クラス名と、ターゲット アプリケーションで検出されたウィンドウ クラスを照合する方法を制御するフラグ。

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

参照

処理手順

クライアント側 UI オートメーション プロバイダーの作成

クライアント アプリケーションに UI オートメーション プロバイダーを実装する