UI オートメーションの概要
メモ |
---|
このドキュメントは、System.Windows.Automation 名前空間で定義されているマネージ UI Automation クラスを使用する .NET Framework 開発者を対象としています。UI Automationに関する最新情報については、「Windows Automation API: UI Automation (Windows オートメーション API: UI オートメーション)」を参照してください。 |
Microsoft UI Automationは、Windows Presentation Foundation (WPF) をサポートするすべてのオペレーティング システムで利用可能な、Microsoft Windows の新しいアクセシビリティ フレームワークです。
UI Automationは、デスクトップ上のほとんどの user interface (UI) 要素へのプログラムによるアクセスを提供し、スクリーン リーダーなどの補助技術製品が UI に関する情報をエンド ユーザーに提供したり、標準入力方式以外の方法で UI を操作したりできるようにします。 また、UI Automationは、自動テスト スクリプトが UI と対話できるようにします。
メモ |
---|
UI Automationでは、[別のユーザーとして実行] コマンドを使用して別々のユーザーが開始したプロセス間の通信を行うことはできません。 |
UI オートメーション クライアント アプリケーションを作成すると、そのアプリケーションは、複数のフレームワーク上で動作することが保証されます。 UI Automation コアは、UI のさまざまな部分の基になるフレームワークのあらゆる差異をマスクします。 たとえば、WPF のボタンの Content プロパティ、Win32 のボタンの Caption プロパティ、および HTML イメージの ALT プロパティは、UI Automation ビュー内では、すべて単一のプロパティ、つまり Name にマップされます。
UI Automationの完全な機能は、Windows Vista、Microsoft Windows XP、および Windows Server 2003 で利用できます。
UI オートメーション プロバイダーは、組み込みのブリッジ サービスを通じて、Microsoft Active Accessibility クライアント アプリケーションを一部サポートします。
このトピックは、次のセクションで構成されています。
- プロバイダーおよびクライアント
- UI オートメーション モデル
- 関連トピック
プロバイダーおよびクライアント
UI Automationには、次の表に示す 4 つの主要なコンポーネントがあります。
コンポーネント |
説明 |
---|---|
プロバイダー API (UIAutomationProvider.dll および UIAutomationTypes.dll) |
UI オートメーション プロバイダーによって実装されるインターフェイス定義のセット。UI 要素に関する情報を提供し、プログラムによる入力に応答するオブジェクトです。 |
クライアント API (UIAutomationClient.dll および UIAutomationTypes.dll) |
UI オートメーション クライアント アプリケーションが、UI に関する情報を取得し、コントロールに入力を送信することを可能にする、各種マネージ コードのセット。 |
UiAutomationCore.dll |
プロバイダーとクライアントの間の通信を処理する、基になるコード (UI Automation コアとも呼ばれます)。 |
UIAutomationClientsideProviders.dll |
従来の標準コントロールに使用する UI オートメーション プロバイダーのセット (WPF コントロールは UI Automationをネイティブにサポートします)。 このサポートは、クライアント アプリケーションに対して自動的に有効になります。 |
ソフトウェア開発者の観点からは、UI Automationを使用するには、カスタム コントロール用のサポートを作成する (プロバイダー API を使用) か、または UI Automation コアを使用して UI 要素と通信するアプリケーションを作成する (クライアント API を使用)、という 2 つの方法があります。 主要な目的に応じて、ドキュメントの該当箇所を参照してください。 次の各セクションでは、概念の詳細と、実際的な方法について説明します。
セクション |
主題 |
対象ユーザー |
---|---|---|
UI オートメーションの基礎 (このセクション) |
概念についての広範な概要。 |
すべて。 |
プロバイダー API を使用する際に役立つ概要と「方法」トピック。 |
コントロールの開発者。 |
|
クライアント API を使用する際に役立つ概要と「方法」トピック。 |
クライアント アプリケーションの開発者。 |
|
コントロール パターンをプロバイダーで実装する方法と、クライアントで使用可能な機能に関する情報。 |
すべて。 |
|
Text コントロール パターンをプロバイダーで実装する方法と、クライアントで使用可能な機能に関する情報。 |
すべて。 |
|
さまざまなコントロール型でサポートされるプロパティとコントロール パターンに関する情報。 |
すべて。 |
UI Automationの名前空間、それらの名前空間を含む DLL、およびそれらを使用する対象ユーザーを次の表に示します。
名前空間 |
参照される DLL |
対象ユーザー |
---|---|---|
UIAutomationClientUIAutomationTypes |
UI オートメーション クライアントの開発者。AutomationElement オブジェクトの検索、UI Automation イベントの登録、および UI Automationのコントロール パターンの利用の際に使用します。 |
|
UIAutomationProviderUIAutomationTypes |
WPF 以外のフレームワークの UI オートメーション プロバイダーの開発者。 |
|
UIAutomationClientUIAutomationTypes |
WPF 以外のフレームワークで使用する UI オートメーション プロバイダーの開発者が、TextPattern コントロール パターンを実装する際に使用します。 |
|
PresentationFramework |
WPF で使用する UI オートメーション プロバイダーの開発者。 |
UI オートメーション モデル
UI Automationは、UI のすべての部分を、クライアント アプリケーションに対して、AutomationElement として公開します。 各要素は、デスクトップをルート要素とするツリー構造に格納されます。 クライアントでは、ツリーの未加工ビューを、コントロール ビューまたはコンテンツ ビューとしてフィルター処理できます (ツリー構造のこれらの標準ビューは、この software development kit (SDK) に付属する UI Spy アプリケーションを使用することで、簡単に表示できます)。アプリケーションでは、カスタム ビューを作成することもできます。
AutomationElement オブジェクトは、それらが表す UI 要素の一般的なプロパティを公開します。 これらのプロパティの 1 つにコントロール型があります。これは、その基本的な外観と機能を認識可能な単一のエンティティとして定義するもので、ボタンやチェック ボックスなどがその例です。
また、各要素は、そのコントロール型に固有のプロパティを提供するコントロール パターンも公開します。 コントロール パターンは、クライアントが要素に関するより詳細な情報を取得し、入力を提供できるようにするメソッドも公開します。
メモ |
---|
コントロール型とコントロール パターンの間には、1 対 1 の対応はありせん。1 つのコントロール パターンが複数のコントロール型でサポートされる場合もありますし、1 つのコントロールが複数のコントロール パターンをサポートし、各パターンがそのコントロールの動作の異なる側面を公開する場合もあります。たとえば、1 つのコンボ ボックスは、少なくとも 2 つのコントロール パターンを持ちます。1 つは、それを展開して折りたたむ機能を表し、もう 1 つは、選択機構を表します。詳細については、「UI オートメーション コントロール型」を参照してください。 |
また、UI Automationは、クライアント アプリケーションにイベントを通じて情報を提供します。 WinEvents とは異なり、UI Automation のイベントは、ブロードキャスト機構に基づいていません。 UI Automationのクライアントは、特定のイベント通知を登録し、特定の UI Automation プロパティとコントロール パターン情報を自身のイベント ハンドラーに渡すように要求することができます。 また、UI Automationのイベントには、それを発生させた要素への参照が含まれています。プロバイダーは、クライアントがリッスンしているかどうかに応じて選択的にイベントを発生させることで、パフォーマンスを向上させることができます。