UI オートメーションの仕様

このトピックでは、UI オートメーションのWindows実装の基礎となる Microsoft UI オートメーション 仕様の概要について説明します。 UI オートメーション仕様は、Microsoft Windows 以外のプラットフォームでサポートできます。 詳細については、「UI オートメーション仕様」を参照してください。

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

Introducton

UI オートメーション仕様では、Windows デスクトップ上の UI 要素に柔軟にプログラムでアクセスできるため、スクリーン リーダーなどの支援技術製品は、UI に関する情報をエンド ユーザーに提供し、標準入力以外の方法で UI を操作できます。

UI オートメーションは、単なるインターフェイス定義よりも範囲が広いです。 次の機能を提供します。

  • クライアント アプリケーションがイベントの受信、プロパティ値の取得、UI 要素の操作を容易にするオブジェクト モデルと関数。
  • プロセス境界を越えて検索およびフェッチするためのコア インフラストラクチャ。
  • UI 要素のツリー構造、一般的なプロパティ、および機能を表すプロバイダー向けのインターフェイスのセット。
  • クライアントとプロバイダーが UI オブジェクトの共通プロパティ、機能、および構造を明確に示す "コントロール型" プロパティ。

UI オートメーションは、次の方法で Microsoft Active Accessibility を改善します。

  • インプロセス アクセスを引き続き許可しながら、効率的なアウトプロセス クライアントを有効にします。
  • クライアントをアウトプロセスにできる方法で UI に関する詳細情報を公開する。
  • 制限を継承せずに Microsoft Active Accessibility と共存し、活用する。 詳細については、「Microsoft Active Accessibility and UI オートメーション Compared」を参照してください。
  • 実装が簡単 な IAccessible の代替手段を提供します。

WindowsのUI オートメーション仕様の実装は、コンポーネント オブジェクト モデル (COM) ベースのインターフェイスとマネージド インターフェイスを備えています。

UI オートメーション要素

UI オートメーションは、UI のすべての部分をオートメーション要素としてクライアント アプリケーションに公開します。 プロバイダーは、各要素のプロパティ値を指定します。 要素はツリー構造として公開され、デスクトップはルート要素として公開されます。

オートメーション要素は、それらが表す UI 要素の共通プロパティを公開します。 これらのプロパティの 1 つはコントロールの種類で、基本的な外観と機能 (ボタンやチェック ボックスなど) を記述します。

UI オートメーション ツリー

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

screen shot showing ui automation tree

UI オートメーション ツリー内の兄弟の順序は非常に重要であることに注意してください。 視覚的に隣り合うオブジェクトも、UI オートメーション ツリー内で隣り合っている必要があります。

特定のコントロールのUI オートメーション プロバイダーは、そのコントロールの子要素間のナビゲーションをサポートします。 ただし、プロバイダーは、これらのコントロール サブツリー間のナビゲーションには関係ありません。 これは、UI オートメーション コアにより、既定のウィンドウ プロバイダーからの情報を使用して管理されます。

クライアントが UI 情報をより効果的に処理できるように、フレームワークはオートメーション ツリーの代替ビュー (生ビュー、コントロール ビュー、コンテンツ ビュー) をサポートします。 次の表に示すように、フィルター処理の種類によってビューが決まります。また、クライアントはビューのスコープを定義します。

オートメーション ツリー 説明
列ビュー デスクトップがルートであるオートメーション要素オブジェクトの完全なツリー。
コントロール ビュー ユーザーが認識する UI 構造に密接にマップされる生のビューのサブセット。
コンテンツ ビュー ドロップダウン コンボ ボックスの値など、ユーザーに最も関連性の高いコンテンツを含むコントロール ビューのサブセット。

 

詳細については、「UI オートメーション ツリーの概要」を参照してください。

UI オートメーションプロパティ

UI オートメーション仕様では、オートメーション要素のプロパティとコントロール パターンプロパティの 2 種類のプロパティを定義します。 オートメーション要素のプロパティはほとんどのコントロールに適用され、要素に関する基本的な情報 (名前など) が提供されます。 コントロール パターンのプロパティは、次に説明するコントロール パターンに適用されます。

Microsoft Active Accessibility とは異なり、すべてのUI オートメーションプロパティは GUID とプログラム名によって識別されるため、新しいプロパティを導入しやすくなります。

詳細については、「 UI Automation Properties Overview」を参照してください。

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

コントロール パターンは、オートメーション要素の機能の特定の側面を表します。 たとえば、ボタンやハイパーリンクなどの単純な "クリック可能" コントロールでは、"クリック" アクションを表す呼び出しコントロール パターンをサポートする必要があります。

各コントロール パターンは、使用可能な UI 機能と関数の正規表現です。 UI オートメーションの現在の実装では、22 の制御パターンが定義されています。 Windows Automation API では、カスタム コントロール パターンをサポートすることもできます。 Microsoft Active Accessibility ロールまたは状態プロパティとは異なり、1 つのオートメーション要素で複数のUI オートメーションコントロール パターンをサポートできます。

詳細については、「 UI Automation Control Patterns Overview」を参照してください。

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

コントロール型は、要素が表す既知のコントロールを指定するオートメーション要素プロパティです。 現在、UI オートメーションでは、Button、CheckBox、ComboBox、DataGrid、Document、Hyperlink、Image、ToolTip、Tree、Window など、38 種類のコントロールが定義されています。

要素にコントロール型を割り当てる前に、特定のオートメーション ツリー構造、プロパティ値、コントロール パターン、イベントなど、特定の条件を満たす必要があります。 ただし、これらに限定されるわけではありません。 カスタム パターンとプロパティと、定義済みのパターンを使用してコントロールを拡張できます。

定義済みのコントロールの種類の合計数は、Microsoft Active Accessibility オブジェクト ロールよりも大幅に少なくなります。これは、UI オートメーションコントロール パターンを組み合わせて、より大きな機能セットを表現できますが、Microsoft Active Accessibility ロールでは表現できないためです。

詳細については、「 UI Automation Control Types Overview」を参照してください。

UI オートメーション イベント

UI オートメーションイベントは、オートメーション要素に対する変更と実行されたアクションをアプリケーションに通知します。 UI オートメーション イベントには 4 種類があり、UI の視覚的な状態が変更されたとは限りません。 UI オートメーション イベント モデルは、Windowsの WinEvent フレームワークに依存しませんが、Windows Automation API を使用すると、microsoft Active Accessibility フレームワークとUI オートメーションイベントが相互運用できるようになります。

詳細については、「 UI Automation Events Overview」を参照してください。

UI オートメーション仕様Windows Automation API の概要