UI オートメーションの概要

Microsoft UI オートメーション は、Windowsのアクセシビリティ フレームワークです。 デスクトップ上のほとんどの UI 要素へのプログラムによるアクセスを提供します。 スクリーン リーダーなどの支援技術製品を使用すると、UI に関する情報をエンド ユーザーに提供し、標準入力以外の方法で UI を操作できます。 また、UI オートメーションにより、自動テスト スクリプトが UI と対話できるようになります。

UI オートメーションは、Microsoft .NET Frameworkの一部として、Windows XP で初めて入手できます。 その時点ではアンマネージド C++ API も公開されていましたが、相互運用性の問題により、クライアント関数の有用性は制限されていました。 Windows 7 の場合、API はコンポーネント オブジェクト モデル (COM) で書き換えられます。

Note

以前のバージョンの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 クライアント アプリケーションのサポートを提供するコンポーネントです。

Note

UI オートメーションでは、Run as コマンドを使用して異なるユーザーによって開始されるプロセス間の通信は有効になりません。

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

UI オートメーション コンポーネント

UI オートメーションには、次の表に示す 4 つの主要なコンポーネントがあります。

コンポーネント 説明
プロバイダー API UI オートメーション プロバイダーによって実装される一連の COM インターフェイス。 UI オートメーション プロバイダーは、UI 要素に関する情報を提供し、プログラムによる入力に応答するオブジェクトです。
クライアント API クライアント アプリケーションが UI に関する情報を取得し、コントロールに入力を送信できるようにする一連の COM インターフェイス。
[!注]
非推奨のコントロール パターン関数非推奨のノード関数で説明されている関数は非推奨です。 代わりに、クライアント アプリケーションでは、「クライアントの要素インターフェイスのUI オートメーション」で説明されているUI オートメーション COM インターフェイスを使用する必要があります。

UIAutomationCore.dll プロバイダーとクライアント間の通信を処理するランタイム ライブラリ (UI オートメーション コアとも呼ばれます)。
Oleacc.dll Microsoft Active Accessibility とプロキシ オブジェクトのランタイム ライブラリ。 また、このライブラリには、Win32 コントロールをサポートするためにプロキシをUI オートメーションするために Microsoft Microsoft Active Accessibility によって使用されるプロキシ オブジェクトも用意されています。

UI オートメーションを使用するには、プロバイダー API を使用してカスタム コントロールのサポートを作成する方法と、UI オートメーション コアを使用して UI 要素に関する情報の通信と取得を行うクライアント アプリケーションを作成する方法の 2 つの方法があります。 主要な目的に応じて、ドキュメントの該当箇所を参照してください。 カスタム コントロールのサポートを作成する必要がある場合は、プロバイダー プログラマ ガイドUI オートメーション参照してください。 UI 要素に関する情報を通信または取得する必要がある場合は、クライアント プログラマ ガイドUI オートメーション参照してください。

ヘッダー ファイルのUI オートメーション

UI オートメーション API は、Windows ソフトウェア開発キット (SDK) に含まれるいくつかの異なる C/C++ ヘッダー ファイルで定義されています。 UI オートメーション ヘッダー ファイルについては、次の表を参照してください。

ヘッダー ファイル 説明
UIAutomationClient.h UI オートメーション クライアントで使用されるインターフェイスと関連するプログラミング要素を定義します。
UIAutomationCore.h UI オートメーション プロバイダーによって使用されるインターフェイスと関連するプログラミング要素を定義します。
UIAutomationCoreApi.h UI オートメーションクライアントとプロバイダーによって使用される一般的な定数、GUID、データ型、および構造体を定義します。 また、非推奨のノード関数と制御パターン関数の定義も含まれています。
UIAutomation.h 他のすべてのUI オートメーションヘッダー ファイルが含まれます。 ほとんどのUI オートメーションアプリケーションでは、すべてのUI オートメーション ヘッダー ファイルの要素が必要であるため、各ファイルを個別に含めるのではなく、UI オートメーション アプリケーション プロジェクトに UIAutomation.h を含めるのが最善です。

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」をご覧ください。

Note

コントロールの種類とコントロール パターンの間に 1 対 1 の対応はありません。 1 つのコントロール パターンが複数のコントロール型でサポートされる場合もありますし、1 つのコントロールが複数のコントロール パターンをサポートし、各パターンがそのコントロールの動作の異なる側面を公開する場合もあります。 たとえば、1 つのコンボ ボックスは、少なくとも 2 つのコントロール パターンを持ちます。1 つは、それを展開して折りたたむ機能を表し、もう 1 つは、選択機構を表します。 ただし、コントロールは 1 つのコントロール型のみを示すことができます。

UI オートメーションは、イベントを介してクライアント アプリケーションに情報を提供します。 WinEvents とは異なり、UI オートメーションのイベントは、ブロードキャスト機構に基づいていません。 UI オートメーションクライアントは、特定のイベント通知に登録し、特定のプロパティと制御パターン情報をイベント ハンドラーに渡すよう要求できます。 また、UI オートメーション イベントには、原因となった要素への参照が含まれています。 プロバイダーはイベントを選択的に発生させることによってパフォーマンスを向上させることができますが、クライアントがリッスンしているかどうかによって異なります イベントの詳細については、「 UI Automation Events Overview」を参照してください。

概念

UI オートメーション コントロール型の概要

UI オートメーション コントロール パターンの概要

UI オートメーション イベントの概要