UI オートメーション要素からのプロパティの取得

IUIAutomationElement オブジェクトのプロパティには、UI 要素 (通常はコントロール) に関する情報が含まれています。 要素のプロパティはジェネリックです。つまり、コントロール型に固有ではありません。 要素のコントロール固有のプロパティは、そのコントロール パターン インターフェイスによって公開されます。

Microsoft UI オートメーション プロパティは読み取り専用です。 コントロールのプロパティを設定するには、適切なコントロール パターンのメソッドを使用する必要があります。 たとえば、 IUIAutomationScrollPattern::Scroll を使用して、スクロール ウィンドウの位置値を変更します。

パフォーマンスを向上させるために、要素の取得時にコントロールとコントロール パターンのプロパティ値をキャッシュできます。 詳細については、「キャッシュUI オートメーションプロパティとコントロール パターン」を参照してください。

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

プロパティ ID

プロパティ識別子は、Uiautomationclient.h で定義されています。 これらは、プロパティ変更イベントのサブスクライブ、プロパティ値の取得、およびプロパティ条件の構築時にプロパティを指定するために使用されます。 プロパティ識別子は、 IUIAutomationPropertyChangedEventHandler::HandlePropertyChangedEvent が呼び出されたときに変更されたプロパティも識別します。

UI オートメーションプロパティ識別子の一覧については、「プロパティ識別子」を参照してください。

プロパティ条件

プロパティ ID は、UI オートメーション要素を検索するために使用される IUIAutomationPropertyCondition オブジェクトの構築に使用されます。 たとえば、特定の名前を持つ要素や、有効になっているすべてのコントロールを検索できます。 各プロパティ条件は、プロパティ識別子と、プロパティが一致する必要がある値を指定します。

詳細については、次のリファレンス トピックを参照してください。

プロパティの取得

一部のジェネリック プロパティとすべてのコントロール パターン プロパティは、 IUIAutomationElement またはコントロール パターン インターフェイスのプロパティとして使用でき、 IUIAutomationElement::CurrentNameCachedDockPosition などのアクセサーを使用して取得できます。

さらに、現在またはキャッシュされたプロパティ (コントロール パターン プロパティ以外) は、次のいずれかのメソッドを使用して取得できます。

これらの方法では、パフォーマンスが若干向上し、さまざまなプロパティにアクセスできます。 ただし、 値は VARIANT 構造体で返されますが、個々のプロパティ アクセサーは値を適切な型にキャストします。

既定のプロパティ値

UI オートメーション プロバイダーが プロパティを実装していない場合、UI オートメーションは既定値を指定できます。 たとえば、コントロールのプロバイダーが UIA_HelpTextPropertyId によって識別されるプロパティをサポートしていない場合、UI オートメーションは空の文字列を返します。 同様に、プロバイダーが UIA_IsDockPatternAvailablePropertyId で識別される プロパティをサポートしていない場合、UI オートメーションは FALSE を返します。

IUIAutomationElement::GetCurrentPropertyValueGetCurrentPropertyValueEx (および同様のメソッドのペア) の違いは、"Ex" メソッドで既定値を返さないことを指定できることです。 この場合、戻り値は特殊な一意の定数であり、 プロパティがサポートされていないことを示します。 この値を受け取った場合、アプリケーションは独自の値を指定することも、 プロパティを無視することもできます。

概念

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

プロパティ識別子