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::IsControlElement プロパティと IUIAutomationElement::IsContentElement プロパティの両方が TRUE に設定されている UI 項目のみが含まれます。

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

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

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

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

3 つのドロップダウン項目を含む単純なコンボ ボックスのスクリーン ショット

コントロールとコンボ ボックス項目のコンテンツ ビューを含む uispy アプリケーションのスクリーン ショット

概念

CUIAutomation オブジェクトの作成

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

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