注
このドキュメントは、System.Windows.Automation 名前空間で定義されているマネージド UI オートメーション クラスを使用する .NET Framework 開発者を対象としています。 UI オートメーションの最新情報については、「Windows Automation API: UI オートメーション 」を参照してください。
Microsoft UI オートメーションは、Windows Presentation Foundation (WPF) をサポートするすべてのオペレーティング システムで利用できる、Microsoft Windows 用の新しいアクセシビリティ フレームワークです。
UI オートメーションは、デスクトップ上のほとんどのユーザー インターフェイス (UI) 要素へのプログラムによるアクセスを提供し、スクリーン リーダーなどの支援技術製品が UI に関する情報をエンド ユーザーに提供し、標準入力以外の方法で UI を操作できるようにします。 UI オートメーションを使用すると、自動テスト スクリプトで UI を操作することもできます。
注
UI オートメーションでは、[ 実行 ] コマンドを使用して異なるユーザーによって開始されたプロセス間の通信は有効になりません。
UI オートメーション クライアント アプリケーションは、複数のフレームワークで動作することを保証して記述できます。 UI オートメーション コアは、さまざまな UI の基礎となるフレームワークの違いをマスクします。 たとえば、WPF ボタンの Content
プロパティ、Win32 ボタンの Caption
プロパティ、HTML イメージの ALT
プロパティはすべて、UI オートメーション ビューの単一のプロパティ ( Name) にマップされます。
UI オートメーションは、.NET Framework を実行しているサポートされている Windows オペレーティング システムで完全な機能を提供します ( .NET Framework のシステム要件 または .NET Core 3.0 以降の .NET Core のバージョンを参照してください)。
UI オートメーション プロバイダーは、組み込みのブリッジング サービスを通じて、Microsoft Active Accessibility クライアント アプリケーションをサポートしています。
プロバイダーとクライアント
UI オートメーションには、次の表に示すように、4 つの主要なコンポーネントがあります。
コンポーネント | 説明 |
---|---|
プロバイダー API (UIAutomationProvider.dll と UIAutomationTypes.dll) | UI オートメーション プロバイダーによって実装されるインターフェイス定義のセット。UI 要素に関する情報を提供し、プログラムによる入力に応答するオブジェクト。 |
クライアント API (UIAutomationClient.dll と UIAutomationTypes.dll) | UI オートメーション クライアント アプリケーションが UI に関する情報を取得し、コントロールに入力を送信できるようにするマネージド コードの型のセット。 |
UiAutomationCore.dll | プロバイダーとクライアント間の通信を処理する基になるコード (UI オートメーション コアとも呼ばれます)。 |
UIAutomationClientsideProviders.dll | 標準のレガシ コントロール用の UI オートメーション プロバイダーのセット。 (WPF コントロールには UI オートメーションのネイティブ サポートがあります)。このサポートは、クライアント アプリケーションで自動的に使用できます。 |
ソフトウェア開発者の観点からは、UI オートメーションを使用する 2 つの方法があります。カスタム コントロールのサポートを作成する (プロバイダー API を使用)、UI オートメーション コアを使用して UI 要素と通信するアプリケーションを作成する (クライアント API を使用)。 フォーカスに応じて、ドキュメントのさまざまな部分を参照する必要があります。 概念の詳細を学習し、次のセクションで実用的なハウツー知識を得ることができます。
セクション | 題材 | 聴衆 |
---|---|---|
UI オートメーションの基礎 (このセクション) | 概念の概要。 | すべて。 |
マネージド コード向けの UI オートメーション プロバイダー | プロバイダー API の使用に役立つ概要と操作方法に関するトピック。 | 開発者を制御する。 |
マネージド コード用のUIオートメーション クライアント | クライアント API の使用に役立つ概要と操作方法に関するトピック。 | クライアント アプリケーション開発者。 |
UI オートメーション コントロール パターン | プロバイダーによって制御パターンを実装する方法と、クライアントが使用できる機能に関する情報。 | すべて。 |
UI オートメーション テキスト パターン | プロバイダーによってテキスト コントロール パターンを実装する方法と、クライアントが使用できる機能に関する情報。 | すべて。 |
UI オートメーション コントロールの種類 | さまざまなコントロールの種類でサポートされるプロパティとコントロール パターンに関する情報。 | すべて。 |
次の表に、UI オートメーション名前空間、それらを含む DLL、およびそれらを使用する対象ユーザーを示します。
Namespace | 参照される DLL | 聴衆 |
---|---|---|
System.Windows.Automation | UIAutomationClientUIAutomationTypes | UI オートメーション クライアント開発者。は、 AutomationElement オブジェクトの検索、UI オートメーション イベントの登録、UI オートメーション コントロール パターンの操作に使用されます。 |
System.Windows.Automation.Provider | UIAutomationProviderUIAutomationTypes | WPF 以外のフレームワーク用の UI オートメーション プロバイダーの開発者。 |
System.Windows.Automation.Text | UIAutomationClientUIAutomationTypes | WPF 以外のフレームワーク用の UI オートメーション プロバイダーの開発者。TextPattern コントロール パターンを実装するために使用されます。 |
System.Windows.Automation.Peers | プレゼンテーションフレームワーク (PresentationFramework) | WPF 用 UI オートメーション プロバイダーの開発者。 |
UI オートメーション モデル
UI オートメーションは、UI のすべての部分を AutomationElementとしてクライアント アプリケーションに公開します。 要素はツリー構造に含まれています。デスクトップはルート要素です。 クライアントは、ツリーの生のビューをコントロール ビューまたはコンテンツ ビューとしてフィルター処理できます。 アプリケーションでは、カスタム ビューを作成することもできます。
AutomationElement オブジェクトは、それらが表す UI 要素の共通プロパティを公開します。 これらのプロパティの 1 つはコントロールの種類です。コントロールの種類は、ボタンやチェック ボックスなど、1 つの認識可能なエンティティとして基本的な外観と機能を定義します。
さらに、要素は、コントロール型に固有のプロパティを提供するコントロール パターンを公開します。 また、コントロール パターンでは、クライアントが要素に関する詳細情報を取得し、入力を提供できるようにするメソッドも公開されます。
注
コントロール型とコントロール パターンの間に一対一の対応はありません。 コントロール パターンは複数のコントロール型でサポートされる場合があり、1 つのコントロールは複数のコントロール パターンをサポートする場合があり、それぞれが動作のさまざまな側面を公開します。 たとえば、コンボ ボックスには少なくとも 2 つのコントロール パターンがあります。1 つは展開と折りたたみの機能を表し、もう 1 つは選択メカニズムを表します。 詳細については、「 UI オートメーション コントロールの種類」を参照してください。
UI オートメーションは、イベントを介してクライアント アプリケーションに情報を提供します。 WinEvents とは異なり、UI オートメーション イベントはブロードキャスト メカニズムに基づいていません。 UI オートメーション クライアントは、特定のイベント通知に登録し、特定の UI オートメーション プロパティとコントロール パターン情報をイベント ハンドラーに渡すことを要求できます。 さらに、UI オートメーション イベントには、それを発生させた要素への参照が含まれています。 プロバイダーは、クライアントがリッスンしているかどうかに応じて、イベントを選択的に発生させることでパフォーマンスを向上させることができます。