UI オートメーションの概要
Microsoft UI オートメーションは、Windows 用のアクセシビリティ フレームワークです。 デスクトップ上のほとんどの UI 要素へのプログラムによるアクセスを提供します。 スクリーン リーダーなどの支援技術製品を使用すると、UI に関する情報をエンド ユーザーに提供したり、標準入力以外の方法で UI を操作したりできます。 また、UI オートメーションにより、自動テスト スクリプトが UI と対話できるようになります。
UI オートメーションは、Microsoft .NET Frameworkの一部として Windows XP で最初に使用できます。 その時点ではアンマネージド C++ API も公開されていましたが、相互運用性の問題により、クライアント関数の有用性は制限されていました。 Windows 7 の場合、API はコンポーネント オブジェクト モデル (COM) で書き換えられます。
注意
以前のバージョンの UI オートメーションで導入されたライブラリ関数はまだ文書化されていますが、新しいアプリケーションでは使用しないでください。
UI オートメーション クライアント アプリケーションは、複数の Microsoft Windows コントロール フレームワークで動作することを保証して記述できます。 UI オートメーション コアは、UI のさまざまな部分の基礎となるフレームワークの違いをマスクします。 たとえば、Windows Presentation Foundation (WPF) ボタンの Content プロパティ、Microsoft Win32 ボタンの Caption プロパティ、HTML イメージの Alt プロパティはすべて、UI オートメーション ビューの単一のプロパティ Name にマップされます。
UI オートメーションは、Windows XP、Windows Server 2003、およびそれ以降のオペレーティング システムで完全な機能を提供します。
UI オートメーション プロバイダーは、コントロールに UI オートメーションのサポートを実装し、組み込みのブリッジング サービスを通じて Microsoft Active Accessibility クライアント アプリケーションのサポートを提供するコンポーネントです。
注意
UI オートメーションでは、[ 実行 ] コマンドを使用してさまざまなユーザーによって開始されるプロセス間の通信は有効になりません。
このトピックは、次のセクションで構成されています。
UI オートメーション コンポーネント
UI オートメーションには、次の表に示す 4 つの主要なコンポーネントがあります。
コンポーネント | 説明 |
---|---|
プロバイダー API | UI オートメーション プロバイダーによって実装される一連の COM インターフェイス。 UI オートメーション プロバイダーは、UI 要素に関する情報を提供し、プログラムによる入力に応答するオブジェクトです。 |
クライアント API | クライアント アプリケーションが UI に関する情報を取得し、コントロールに入力を送信できるようにする一連の COM インターフェイス。
メモ:「非推奨のコントロール パターン関数」および「非推奨のノード関数」で説明されている関数は非推奨です。 代わりに、クライアント アプリケーションでは、「クライアントの UI オートメーション要素インターフェイス」で説明されている UI オートメーション COM インターフェイスを使用する必要があります。 |
UIAutomationCore.dll | プロバイダーとクライアント間の通信を処理するランタイム ライブラリ (UI オートメーション コアとも呼ばれます)。 |
Oleacc.dll | Microsoft Active Accessibility とプロキシ オブジェクトのランタイム ライブラリ。 また、このライブラリには、Win32 コントロールをサポートするために Microsoft Microsoft Active Accessibility から UI オートメーション プロキシに使用されるプロキシ オブジェクトも用意されています。 |
UI オートメーションを使用するには、プロバイダー API を使用してカスタム コントロールのサポートを作成する方法と、UI オートメーション コアを使用して UI 要素と通信し、情報を取得するクライアント アプリケーションを作成する方法の 2 つの方法があります。 主要な目的に応じて、ドキュメントの該当箇所を参照してください。 カスタム コントロールのサポートを作成する必要がある場合は、「 UI オートメーション プロバイダー プログラマー ガイド」を参照してください。 UI 要素に関する情報を通信または取得する必要がある場合は、「 UI オートメーション クライアント プログラマー ガイド」を参照してください。
UI オートメーション ヘッダー ファイル
UI オートメーション API は、Windows ソフトウェア開発キット (SDK) に含まれるいくつかの異なる C/C++ ヘッダー ファイルで定義されています。 UI オートメーション ヘッダー ファイルについては、次の表で説明します。
ヘッダー ファイル | Description |
---|---|
UIAutomationClient.h | UI オートメーション クライアントで使用されるインターフェイスと関連するプログラミング要素を定義します。 |
UIAutomationCore.h | UI オートメーション プロバイダーによって使用されるインターフェイスと関連するプログラミング要素を定義します。 |
UIAutomationCoreApi.h | UI オートメーション クライアントとプロバイダーで使用される一般的な定数、GUID、データ型、および構造体を定義します。 また、非推奨のノード関数と制御パターン関数の定義も含まれています。 |
UIAutomation.h | 他のすべての UI オートメーション ヘッダー ファイルが含まれます。 ほとんどの UI オートメーション アプリケーションにはすべての UI オートメーション ヘッダー ファイルの要素が必要であるため、各ファイルを個別に含めるのではなく、UIAutomation.h を UI オートメーション アプリケーション プロジェクトに含めることをお勧めします。 |
UI オートメーション API を使用するアプリケーションを開発する場合は、プロジェクトに UIAutomation.h を含める必要があります。 アプリケーションで Microsoft Active Accessibility がサポートされている場合は、Oleacc.h ヘッダー ファイルを含めます。 GUID を使用する UI オートメーション アプリケーションには、Initguid.h ヘッダー ファイルも必要です。 必要に応じて、UIAutomation.h の前に Initguid.h を含める必要があります。
UI オートメーション モデル
UI オートメーションは、UI のすべての要素を 、IUIAutomationElement インターフェイスによって表されるオブジェクトとしてクライアント アプリケーションに公開します。 各要素は、デスクトップをルート要素とするツリー構造に格納されます。 クライアントでは、ツリーの未加工ビューを、コントロール ビューまたはコンテンツ ビューとしてフィルター処理できます。 構造のこれらの標準ビューは、Windows SDK に含まれている Inspect アプリケーションを使用して簡単に確認できます。 アプリケーションでは、カスタム ビューを作成することもできます。
UI オートメーション要素は、それが表すコントロールまたは UI 要素のプロパティを公開します。 これらのプロパティの 1 つはコントロール型です。コントロールまたは UI 要素の基本的な外観と機能は、ボタンやチェック ボックスなど、1 つの認識可能なエンティティとして定義されます。 コントロールの種類の詳細については、「 UI オートメーション コントロールの種類の概要」を参照してください。
さらに、UI オートメーション要素は、1 つ以上のコントロール パターンを公開します。 コントロール パターンは、特定のコントロールの種類に固有のプロパティのセットを提供します。 また、コントロール パターンでは、クライアント アプリケーションが 要素に関する詳細情報を取得し、要素に入力を提供できるようにするメソッドも公開されます。 コントロール パターンについて詳しくは、「 UI Automation Control Patterns Overview」をご覧ください。
注意
コントロール型とコントロール パターンの間に一対一の対応はありません。 1 つのコントロール パターンが複数のコントロール型でサポートされる場合もありますし、1 つのコントロールが複数のコントロール パターンをサポートし、各パターンがそのコントロールの動作の異なる側面を公開する場合もあります。 たとえば、1 つのコンボ ボックスは、少なくとも 2 つのコントロール パターンを持ちます。1 つは、それを展開して折りたたむ機能を表し、もう 1 つは、選択機構を表します。 ただし、コントロールは 1 つのコントロール型のみを示すことができます。
UI オートメーションは、イベントを介してクライアント アプリケーションに情報を提供します。 WinEvents とは異なり、UI オートメーションのイベントは、ブロードキャスト機構に基づいていません。 UI オートメーション クライアントは、特定のイベント通知に登録し、特定のプロパティとコントロール パターン情報をイベント ハンドラーに渡すよう要求できます。 また、UI オートメーション イベントには、原因となった要素への参照が含まれています。 プロバイダーはイベントを選択的に発生させることによってパフォーマンスを向上させることができますが、クライアントがリッスンしているかどうかによって異なります イベントの詳細については、「 UI Automation Events Overview」を参照してください。