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

Note

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

支援技術製品とテスト スクリプトを使用すると、UI オートメーション ツリー内を移動してユーザー インターフェイスとその要素に関する情報を収集できます。

UI オートメーション ツリー内にあるルート要素 (RootElement) は、現在のデスクトップを表し、その子要素はアプリケーション ウィンドウを表します。 これらの子要素のそれぞれに、メニュー、ボタン、ツールバー、リスト ボックスなどの UI の構成部分を表す要素を含めることができます。 さらに、これらの要素には、リスト項目などの要素を含めることができます。

UI ツリーは、固定された構造体ではなく、数千もの要素が含まれる場合もあるため、その全体像を見ることはほとんどありません。 その一部は必要に応じてビルドされ、要素の追加、移動、削除に伴って変更されます。

UI オートメーション プロバイダーでは、ルート (通常は、ウィンドウでホストされます) とサブツリーからなるフラグメント内の項目間のナビゲーションを実装することで、UI オートメーション ツリーをサポートしています。 ただし、プロバイダーは、コントロール間のナビゲーションには関与しません。 これは、UI オートメーション コアにより、既定のウィンドウ プロバイダーからの情報を使用して管理されます。

オートメーション ツリーのビュー

UI オートメーション ツリーをフィルター処理することで、特定のクライアントに関連する AutomationElement オブジェクトだけが含まれるビューを作成できます。 この手法を使用すれば、クライアントで、特定のニーズに合わせて、UI オートメーションで表現される構造体をカスタマイズできます。

クライアントがビューをカスタマイズする方法には、スコープ設定とフィルター処理の 2 つがあります。 スコープ設定では、基本要素を起点としてビューの範囲を定義します。たとえば、アプリケーションがデスクトップの直接の子だけを検索するか、アプリケーション ウィンドウのすべての子孫を検索するかを定義できます。 フィルター処理では、ビューに含める要素の種類を定義します。

UI オートメーション プロバイダーは、要素にプロパティ (IsControlElementProperty および IsContentElementProperty プロパティを含む) を定義することで、フィルター処理をサポートしています。

UI オートメーションには、3 つの既定のビューが用意されています。 これらのビューは、実行されるフィルター処理の種類によって定義されます。すべてのビューのスコープは、アプリケーションによって定義されます。 さらに、アプリケーションではプロパティに他のフィルターを適用して、たとえば有効にされているコントロールだけをコントロール ビューに含めることもできます。

列ビュー

UI オートメーション ツリーの未加工ビューは、デスクトップをルートとする AutomationElement オブジェクトの完全なツリーです。 未加工ビューは、アプリケーションのネイティブ プログラムによる構造に忠実に従っているため、使用できるビューの中では最も詳細なビューです。 また、ツリーの他のビューは、未加工ビューに基づいて構築されます。 このビューは基礎となる UI フレームワークに依存することから、WPF ボタンの未加工ビューは Win32 ボタンの未加工ビューとは異なります。

未加工ビューを取得するには、プロパティを指定せずに要素を検索するか、RawViewWalker を使用してツリーを移動します。

コントロール ビュー

UI オートメーション ツリーのコントロール ビューは、エンド ユーザーが認識する UI 構造に密接に対応しているため、そのビューを使用することで、UI をエンド ユーザーに説明してエンド ユーザーがアプリケーションとやりとりできるよう支援するという、支援技術製品のタスクが簡素化されます。

コントロール ビューは、未加工ビューのサブセットです。 コントロール ビューには、エンド ユーザーが対話型として理解する、または UI のコントロールの論理構造に貢献する、未加工ビューのすべての UI 項目が含まれています。 UI の論理構造に貢献する一方、それ自体は対話型ではない UI 項目の例としては、リスト ビューなどの項目コンテナー、ヘッダー、ツールバー、メニュー、ステータス バーが挙げられます。 レイアウトや装飾の目的のためだけに使用される非対話型項目は、コントロール ビューには表示されません。 その一例は、パネルです。パネルは、ダイアログでコントロールをレイアウトするためだけに使用され、情報はまったく含まれません。 コントロール ビューに表示される非対話型の項目は、情報を提供するグラフィックとダイアログ内の静的テキストです。 コントロール ビューに含まれる非対話型の項目がキーボード フォーカスを受け取ることはできません。

コントロール ビューを取得するには、IsControlElement プロパティが true に設定された要素を検索するか、ControlViewWalker を使用してツリーを移動します。

コンテンツ ビュー

UI オートメーション ツリーのコンテンツ ビューは、コントロール ビューのサブセットです。 コンテンツ ビューには、ユーザー インターフェイスで実際の情報を伝える UI 項目が含まれています。これには、キーボード フォーカスを受け取ることができる UI 項目、そして UI 項目のラベルではないテキストが含まれます。 たとえば、ドロップダウン コンボ ボックス内の値は、エンドユーザーが使用する情報を表すため、コンテンツ ビューに表示されます。 コンテンツ ビューでは、コンボ ボックスとリスト ボックスはどちらも、UI 項目のコレクションとして表現され、これらの中から、項目を 1 つ、場合によっては複数選択することができます。 コンテンツ ビューの目的は、ユーザーに提示するデータ (つまりコンテンツ) を表示することなので、このビューは、どの項目が常に開かれていて、どの項目が展開または折りたたむことができるかは重要ではありません。

コンテンツ ビューを取得するには、IsContentElement プロパティが true に設定された要素を検索するか、ContentViewWalker を使用してツリーを移動します。

関連項目