Freigeben über


Benutzeroberflächenautomatisierungs-Eigenschaften für Clients

Aktualisiert: November 2007

In dieser Übersicht werden UI-Automatisierung-Eigenschaften vorgestellt, die für Benutzeroberflächenautomatisierungs-Clientanwendungen verfügbar gemacht werden.

Eigenschaften von AutomationElement-Objekten enthalten Informationen über Benutzeroberfläche (user interface, UI)-Elemente, in der Regel Steuerelemente. Die Eigenschaften eines AutomationElement sind generisch, das heißt, nicht spezifisch für einen Steuerelementtyp. Viele dieser Eigenschaften werden in der AutomationElement.AutomationElementInformation-Struktur verfügbar gemacht.

Steuerelementmuster verfügen auch über Eigenschaften. Die Eigenschaften von Steuerelementmustern sind für das Muster spezifisch. ScrollPattern enthält z. B. Eigenschaften, mit deren Hilfe eine Clientanwendung ermitteln kann, ob ein Fenster über vertikale oder horizontale Bildlaufleisten verfügt und welche Ansichtsgrößen und Bildlaufpositionen aktuell verwendet werden. Steuerelementmuster machen alle Eigenschaften durch eine Struktur verfügbar, z. B. durch ScrollPattern.ScrollPatternInformation.

UI-Automatisierung-Eigenschaften sind schreibgeschützt. Um Eigenschaften eines Steuerelements festzulegen, müssen Sie die Methoden des entsprechenden Steuerelementmusters verwenden. Verwenden Sie z. B. Scroll, um die Positionswerte eines Bildlauffensters zu ändern.

Um die Leistung zu verbessern, können Eigenschaftenwerte von Steuerelementen und Steuerelementmustern zwischengespeichert werden, wenn AutomationElement-Objekte abgerufen werden. Weitere Informationen finden Sie unter Zwischenspeichern in Benutzeroberflächenautomatisierungs-Clients.

Dieses Thema enthält folgende Abschnitte.

  • Eigenschaften-IDs
  • Eigenschaftenbedingungen
  • Abrufen von Eigenschaften
  • Standardeigenschaftenwerte
  • Durch geänderte Eigenschaften ausgelöste Ereignisse
  • Zusätzliche AutomationElement-Eigenschaften
  • Verwandte Abschnitte

Eigenschaften-IDs

Die Bezeichner (identifiers, IDs)-Eigenschaften sind eindeutige, konstante Werte, die in AutomationProperty-Objekten gekapselt werden. Benutzeroberflächenautomatisierungs-Clientanwendungen rufen diese IDs ais der AutomationElement-Klasse oder aus entsprechenden Steuerelementmusterklassen, wie zum Beispiel ScrollPattern, ab. Benutzeroberflächenautomatisierungsanbieter rufen sie aus AutomationElementIdentifiers oder aus einer der Klassen von Steuerelementmuster-IDs ab, z. B. aus ScrollPatternIdentifiers.

Die numerische Id einer AutomationProperty wird von Anbietern zum Identifizieren von Eigenschaften verwendet, die in der IRawElementProviderSimple.GetPropertyValue-Methode abgefragt werden. Im Allgemeinen müssen Clientanwendungen die Id nicht prüfen. Der ProgrammaticName wird nur zum Debuggen und für Diagnosezwecke verwendet.

Eigenschaftenbedingungen

Die Eigenschaften-IDs werden beim Erstellen von PropertyCondition-Objekten verwendet, mit deren Hilfe AutomationElement-Objekte gesucht werden. Sie möchten z. B. ein AutomationElement mit einem bestimmten Namen oder alle aktivierten Steuerelemente suchen. Jede PropertyCondition gibt eine AutomationProperty-ID und den Wert an, mit dem die Eigenschaft übereinstimmen muss.

Weitere Informationen finden Sie unter den folgenden Referenzthemen:

Abrufen von Eigenschaften

Einige Eigenschaften von AutomationElement und alle Eigenschaften einer Steuerelementmusterklasse werden als geschachtelte Eigenschaften der Current-Eigenschaft oder der Cached-Eigenschaft des AutomationElement oder des Steuerelementmusterobjekts verfügbar gemacht.

Darüber hinaus kann jedes AutomationElement oder jede Steuerelementeigenschaft, einschließlich von Eigenschaften, die in der Cached-Struktur oder in der Current-Struktur nicht verfügbar sind, mit einer der folgenden Methoden abgerufen werden:

Diese Methoden bieten eine etwas bessere Leistung sowie Zugriff auf sämtliche Eigenschaften.

Im folgenden Codebeispiel werden die beiden Möglichkeiten zum Abrufen einer Eigenschaft eines AutomationElement veranschaulicht.

' elementList is an AutomationElement.
' The following two calls are equivalent.
Dim name As String = elementList.Current.Name
name = CStr(elementList.GetCurrentPropertyValue(AutomationElement.NameProperty))
// elementList is an AutomationElement.

// The following two calls are equivalent.
string name = elementList.Current.Name;
name = elementList.GetCurrentPropertyValue(AutomationElement.NameProperty) as string;

Um Eigenschaften von Steuerelementmustern abzurufen, die von AutomationElement unterstützt werden, muss das Steuerelementmusterobjekt nicht abgerufen werden. Übergeben Sie einfach eine der Mustereigenschaften-IDs an die Methode.

Im folgenden Codebeispiel werden die beiden Möglichkeiten veranschaulicht, eine Eigenschaft eines Steuerelementmusters abzurufen.

' elementList is an AutomationElement representing a list box.
' Error-checking is omitted. Assume that elementList is known to support SelectionPattern.
Dim selectPattern As SelectionPattern = _
    DirectCast(elementList.GetCurrentPattern(SelectionPattern.Pattern), SelectionPattern)
Dim isMultipleSelect As Boolean = selectPattern.Current.CanSelectMultiple

' The following call is equivalent to the one above.
isMultipleSelect = CBool(elementList.GetCurrentPropertyValue(SelectionPattern.CanSelectMultipleProperty))
// elementList is an AutomationElement representing a list box.
// Error-checking is omitted. Assume that elementList is known to support SelectionPattern.

SelectionPattern selectPattern =
    elementList.GetCurrentPattern(SelectionPattern.Pattern) as SelectionPattern;
bool isMultipleSelect = selectPattern.Current.CanSelectMultiple;

// The following call is equivalent to the one above.
isMultipleSelect = (bool)
    elementList.GetCurrentPropertyValue(SelectionPattern.CanSelectMultipleProperty);

Die Get-Methoden geben ein Object zurück. Die Anwendung muss das zurückgegebene Objekt in den richtigen Typ umwandeln, bevor der Wert verwendet wird.

Standardeigenschaftenwerte

Wenn ein Benzutzeroberflächenautomatisierungsanbieter eine Eigenschaft nicht implementiert, kann das UI-Automatisierung-System einen Standardwert bereitstellen. Wenn der Anbieter für ein Steuerelement die durch HelpTextProperty bezeichnete Eigenschaft z. B. nicht unterstützt, gibt UI-Automatisierung eine leere Zeichenfolge zurück. Wenn der Anbieter die durch IsDockPatternAvailableProperty bezeichnete Eigenschaft nicht unterstützt, gibt UI-Automatisierung entsprechend false zurück.

Sie können dieses Verhalten ändern, indem Sie die AutomationElement.GetCachedPropertyValue-Methodenüberladung und die AutomationElement.GetCurrentPropertyValue-Methodenüberladung verwenden. Wenn Sie true als zweiten Parameter angeben, gibt UI-Automatisierung keinen Standardwert zurück, sondern stattdessen den speziellen Wert NotSupported.

Mit dem folgenden Beispielcode wird versucht, eine Eigenschaft aus einem Element abzurufen. Wenn die Eigenschaft nicht unterstützt wird, wird stattdessen ein von der Anwendung definierter Wert verwendet.

' elementList is an AutomationElement.
Dim help As Object = elementList.GetCurrentPropertyValue(AutomationElement.HelpTextProperty, True)
If help Is AutomationElement.NotSupported Then
    help = "No help available"
End If
Dim helpText As String = CStr(help)
// elementList is an AutomationElement.
object help = elementList.GetCurrentPropertyValue(AutomationElement.HelpTextProperty, true);
if (help == AutomationElement.NotSupported)
{
    help = "No help available";
}
string helpText = (string)help;

Um zu ermitteln, welche Eigenschaften von einem Element unterstützt werden, verwenden Sie GetSupportedProperties. Dies gibt ein Array von AutomationProperty-IDs zurück.

Durch geänderte Eigenschaften ausgelöste Ereignisse

Wenn sich ein Eigenschaftenwert eines AutomationElement oder Steuerelementmusters ändert, wird ein Ereignis ausgelöst. Eine Anwendung kann solche Ereignisse abonnieren, indem AddAutomationPropertyChangedEventHandler aufgerufen wird, worin als letzter Parameter ein Array von AutomationProperty-IDs bereitgestellt wird, mit dem die betreffenden Eigenschaften angegeben werden.

Im AutomationPropertyChangedEventHandler können Sie die geänderte Eigenschaft ermitteln, indem Sie das Property-Element der Ereignisargumente überprüfen. Die Argumente enthalten auch die alten und neuen Werte der geänderten UI-Automatisierung-Eigenschaft. Diese Werte sind vom Typ Object und müssen in den richtigen Typ umgewandelt werden, bevor sie verwendet werden.

Zusätzliche AutomationElement-Eigenschaften

Neben der Current-Eigenschaftenstruktur und der Cached-Eigenschaftenstruktur besitzt AutomationElement die folgenden Eigenschaften, die über einfache Eigenschaftenaccessoren abgerufen werden.

Eigenschaft

Beschreibung

CachedChildren

Eine Auflistung von untergeordneten AutomationElement-Objekten im Cache.

CachedParent

Ein übergeordnetes AutomationElement-Objekt im Cache.

FocusedElement

(Statische Eigenschaft) Das AutomationElement, das den Eingabefokus hat.

RootElement

(Statische Eigenschaft) Das Stamm-AutomationElement.

Siehe auch

Aufgaben

Abonnieren von Benutzeroberflächenautomatisierungs-Ereignissen

Konzepte

Zwischenspeichern in Benutzeroberflächenautomatisierungs-Clients

Implementierung eines serverseitigen Benutzeroberflächenautomatisierungs-Anbieters