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

支援技術製品とテスト スクリプトは、Microsoft UI オートメーション ツリー内を移動して、UI とその要素に関する情報を収集します。

UI オートメーション ツリーは、Windows デスクトップ ウィンドウ ("デスクトップ") を表し、子要素がアプリケーション ウィンドウを表すルート要素です。 これらの各子要素には、メニュー、ボタン、ツール バー、リスト ボックスなど、UI の要素を表す要素を含めることができます。 これらの要素には、リスト アイテムなどの要素を含めることができます。

UI オートメーション ツリーは固定構造ではありません。 何千もの要素が含まれている可能性があるため、その全体にはほとんど見られない。 UI オートメーション ツリーの一部はクライアントが必要とするように構築され、要素の追加、移動、または削除に応じてツリーの構造が変更されます。

UI オートメーション プロバイダーは、フラグメント内の項目間のナビゲーションを実装することで、UI オートメーション ツリーをサポートします。 フラグメントは、特定のフレームワークの要素の完全なサブツリーであり、通常はウィンドウでホストされるルート要素 ( フラグメント ルートと呼ばれます) を持ちます。

プロバイダーは、あるコントロールから別のコントロールへのナビゲーションには関係ありません。 これは、既定のウィンドウ プロバイダーからの情報を使用する UI オートメーション コアによって管理されます。

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

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

UI オートメーション ツリーをフィルター処理して、特定のクライアントに関連するUI オートメーション要素のみを含むビューを作成できます。 このアプローチにより、クライアントは特定のニーズにUI オートメーションして提示される構造をカスタマイズできます。

クライアントは、スコープを設定してフィルター処理することで、ビューをカスタマイズできます。 スコープは、基本要素から始まるビューの範囲を定義しています。 たとえば、アプリケーションでは、デスクトップの直接の子、またはアプリケーション ウィンドウのすべての子孫のみを検索できます。 フィルター処理では、ビューに含まれる要素の種類を定義します。

UI オートメーション プロバイダーでは、IUIAutomationElement::IsControlElement プロパティや IUIAutomationElement::IsContentElement プロパティなど、要素のプロパティを定義してフィルター処理をサポートしています。

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

列ビュー

UI オートメーション ツリーの生のビューは、デスクトップがルートであるオートメーション要素の完全なツリーです。 生のビューは、アプリケーションのネイティブプログラム構造に厳密に従っており、使用可能な最も詳細なビューです。 また、ツリーの他のビューは、未加工ビューに基づいて構築されます。 このビューは基になる UI フレームワークに依存するため、Windows Presentation Foundation (WPF) ボタンの生のビューには、Microsoft Win32 ボタンとは異なる生のビューがあります。

未加工のビューは、プロパティを指定せずに要素を検索するか、 IUIAutomation::RawViewWalker を使用してツリー内を移動するための IUIAutomationTreeWalker インターフェイスを取得することによって取得されます。

コントロール ビュー

コントロール ビューは、未加工ビューのサブセットです。 これには、 IUIAutomationElement::IsControlElement プロパティが TRUE に設定されている UI 項目のみが含まれます。

コントロール ビューには、ユーザーに情報を提供するか、ユーザーがアクションを実行できるようにする UI 項目が含まれます。 これらは、自動テスト アプリケーションにとって最も興味深い UI 項目です。

コントロール ビューには、UI の論理構造に寄与する非対話型 UI 項目も含まれます。 これには、リスト ビュー ヘッダー、ツール バー、メニュー、ステータス バーなどの項目コンテナーが含まれます。 コントロール ビューに表示されるその他の非インターアクティブな項目は、ダイアログ ボックスに情報と静的テキストを含むグラフィックスです。

ダイアログ ボックスでコントロールをレイアウトするために使用されるパネルなど、レイアウトまたは装飾目的でのみ使用される非対話型項目は、コントロール ビューには表示されません。

UI オートメーション ツリーのコントロール ビューは、エンド ユーザーによって認識される UI 構造に密接にマップされます。 これにより、支援技術製品はエンド ユーザーに UI を記述し、エンド ユーザーがアプリケーションとやり取りするのに役立ちます。

コントロール ビューは、 IUIAutomationElement::IsControlElement プロパティが true に設定されている要素を検索するか、 ControlViewWalker を使用してツリー内を移動するための IUIAutomationTreeWalker インターフェイスを取得することによって取得されます。

コンテンツ ビュー

UI オートメーション ツリーのコンテンツ ビューは、コントロール ビューのサブセットです。 IUIAutomationElement::IsControlElementIUIAutomationElement::IsContentElement プロパティの両方が TRUE に設定されている UI 項目のみが含まれます。

コンテンツ ビューには、キーボード フォーカスを受け取ることができる UI 項目や UI 項目のラベルではないテキストなど、ユーザー インターフェイスの実際の情報を伝える UI 項目が含まれています。 これらは、スクリーン リーダー アプリケーションにとって最も興味深い UI 項目です。 たとえば、ドロップダウン コンボ ボックスの値は、エンド ユーザーが使用している情報を表しているため、コンテンツ ビューに表示されます。

コンテンツ ビューでは、コンボ ボックスとリスト ボックスの両方が UI 項目のコレクションとして表され、1 つ以上の項目を選択できます。 1 つのアイテムが常に開き、1 つのアイテムが展開および折りたたむことができるという事実は、ユーザーに表示されているデータ (コンテンツ) を表示するように設計されているため、コンテンツ ビューでは関係ありません。

コンテンツ ビューは、 IsControlElement プロパティと CurrentIsContentElement プロパティの両方が TRUE に設定されている要素を検索するか、 IUIAutomation::ContentViewWalker を使用してツリー 内を移動するための IUIAutomationTreeWalker インターフェイスを取得することによって取得されます。

次の図は、コントロール ビューとコンテンツ ビューの違いを示しています。 最初の画像は、ドロップダウン リストに 3 つの項目がある単純なコンボ ボックスを示しています。 2 番目の図は、UISpy.exe アプリケーションのコントロールビューとコンテンツ ビューにコンボ ボックス UI 項目がどのように表示されるかを示しています。

screen shot of a simple combo box with three drop-down items

screen shot of the uispy application with control and content views of combo box items

概念

CUIAutomation オブジェクトの作成

UI オートメーション要素の取得

UI オートメーションの基礎