Freigeben über


Eigenschaften der UI-Automatisierung für Clients

Hinweis

Diese Dokumentation richtet sich an .NET Framework-Entwickler, die die verwalteten Benutzeroberflächenautomatisierungs-Klassen verwenden möchten, die im System.Windows.Automation-Namespace definiert sind. Die neuesten Informationen zur Benutzeroberflächenautomatisierung finden Sie unter Windows Automation API: Benutzeroberflächenautomatisierung.

In dieser Übersicht werden die Eigenschaften der UI-Automatisierung vorgestellt, wie sie für Clientanwendungen der UI-Automatisierung verfügbar gemacht werden.

Eigenschaften für AutomationElement Objekte enthalten Informationen zu Ui-Elementen (User Interface), in der Regel Steuerelemente. Die Eigenschaften eines AutomationElement Steuerelements sind generisch, d. h. nicht spezifisch für einen Steuerelementtyp. Viele dieser Eigenschaften werden in der AutomationElement.AutomationElementInformation Struktur verfügbar gemacht.

Steuerelementmuster verfügen auch über Eigenschaften. Spezifisch für das Muster sind die Eigenschaften der Steuerungsmuster. Zum Beispiel verfügt ScrollPattern über Eigenschaften, die es einer Clientanwendung ermöglichen, zu erkennen, ob ein Fenster vertikal oder horizontal scrollbar ist und welche die aktuellen Ansichtsgrößen und Bildlaufpositionen sind. Steuerelementmuster machen alle ihre Eigenschaften über eine Struktur verfügbar; beispiel: ScrollPattern.ScrollPatternInformation.

Eigenschaften für die Benutzeroberflächenautomatisierung sind schreibgeschützt. Zum Festlegen von Eigenschaften eines Steuerelements müssen Sie die Methoden des entsprechenden Steuerelementmusters verwenden. Verwenden Sie z. B. Scroll um die Positionswerte eines Scrollfensters zu ändern.

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

Eigenschaften-IDs

Eigenschaftsbezeichner (IDs) sind eindeutige, konstanten Werte, die in AutomationProperty Objekten gekapselt werden. Benutzeroberflächenautomatisierungs-Clientanwendungen erhalten diese IDs aus der AutomationElement Klasse oder aus der entsprechenden Steuerelementmusterklasse, zum Beispiel ScrollPattern. Benutzeroberflächenautomatisierungsanbieter erhalten sie von AutomationElementIdentifiers oder aus einer der Klassen für Steuerelementmusterbezeichner, wie z. B. ScrollPatternIdentifiers.

Die numerische Id eines AutomationProperty wird von Anbietern verwendet, um Eigenschaften zu identifizieren, die mithilfe der IRawElementProviderSimple.GetPropertyValue Methode abgefragt werden. Im Allgemeinen müssen Clientanwendungen die IdDatei nicht untersuchen. Dies ProgrammaticName wird nur für Debugging- und Diagnosezwecke verwendet.

Immobilienzustand

Die Eigenschafts-IDs werden beim Erstellen von PropertyCondition Objekten verwendet, die zur Suche nach AutomationElement Objekten verwendet werden. Sie können z. B. nach einem AutomationElement Steuerelement suchen, das einen bestimmten Namen hat, oder alle aktivierten Steuerelemente. Jeder PropertyCondition gibt einen AutomationProperty Bezeichner und den Wert an, mit dem die Eigenschaft übereinstimmen muss.

Weitere Informationen finden Sie in den folgenden Referenzthemen:

Abrufen von Eigenschaften

Einige Eigenschaften von AutomationElement und alle Eigenschaften einer Steuerelementmusterklasse werden als geschachtelte Eigenschaften der Current oder Cached Eigenschaft des AutomationElement oder des Steuerelementmusterobjekts bereitgestellt.

Darüber hinaus kann eine beliebige AutomationElement-Eigenschaft oder eine Steuerelementmustereigenschaft, einschließlich einer Eigenschaft, die in der Cached- oder Current-Struktur nicht verfügbar ist, mithilfe einer der folgenden Methoden abgerufen werden:

Diese Methoden bieten etwas bessere Leistung sowie den Zugriff auf die gesamte Palette von Eigenschaften.

Das folgende Codebeispiel zeigt die beiden Methoden zum Abrufen einer Eigenschaft in einer AutomationElement.

// elementList is an AutomationElement.

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

Zum Abrufen von Eigenschaften von Steuerelementmustern, die von dem AutomationElementSteuerelement unterstützt werden, müssen Sie das Steuerelementmusterobjekt nicht abrufen. Übergeben Sie einfach eine der Mustereigenschaften-IDs an die Methode.

Das folgende Codebeispiel zeigt die beiden Methoden zum Abrufen einer Eigenschaft in einem Steuerelementmuster.

// 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);
' 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))

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

Standardeigenschaftswerte

Wenn ein Benutzeroberflächenautomatisierungs-Anbieter keine Eigenschaft implementiert, kann das Benutzeroberflächenautomatisierungssystem einen Standardwert angeben. Wenn der Anbieter für ein Steuerelement also beispielsweise die durch HelpTextProperty identifizierte Eigenschaft nicht unterstützt, gibt die Benutzeroberflächenautomatisierung eine leere Zeichenfolge zurück. Wenn der Anbieter die von IsDockPatternAvailableProperty identifizierte Eigenschaft nicht unterstützt, gibt die UI Automation 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 als zweiten Parameter angeben true , gibt die Benutzeroberflächenautomatisierung keinen Standardwert zurück, sondern gibt stattdessen den Sonderwert NotSupportedzurück.

Im folgenden Beispielcode wird versucht, eine Eigenschaft aus einem Element abzurufen, und wenn die Eigenschaft nicht unterstützt wird, wird stattdessen ein anwendungsdefinierter Wert verwendet.

// elementList is an AutomationElement.
object help = elementList.GetCurrentPropertyValue(AutomationElement.HelpTextProperty, true);
if (help == AutomationElement.NotSupported)
{
    help = "No help available";
}
string helpText = (string)help;
' 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)

Um zu ermitteln, welche Eigenschaften von einem Element unterstützt werden, verwenden Sie GetSupportedProperties. Dadurch wird ein Array von AutomationProperty Bezeichnern zurückgegeben.

Durch geänderte Eigenschaften ausgelöste Ereignisse

Wenn sich ein Eigenschaftswert für ein AutomationElement oder ein Steuerelementmuster ändert, wird ein Ereignis ausgelöst. Eine Anwendung kann solche Ereignisse abonnieren, indem AddAutomationPropertyChangedEventHandleraufgerufen wird, worin als letzter Parameter ein Array von AutomationProperty -IDs bereitgestellt wird, mit dem die betreffenden Eigenschaften angegeben werden.

Im AutomationPropertyChangedEventHandlerkö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 Benutzeroberflächenautomatisierungs-Eigenschaft. Diese Werte sind vom Typ Object und müssen vor der Verwendung in den richtigen Typ umgewandelt werden.

Zusätzliche AutomationElement-Eigenschaften

Zusätzlich zu den Current und Cached Strukturen weist AutomationElement die folgenden Eigenschaften auf, die über einfache Eigenschaftsaccessoren abgerufen werden.

Eigentum BESCHREIBUNG
CachedChildren Eine Auflistung untergeordneter AutomationElement Objekte, die sich im Cache befinden.
CachedParent Ein übergeordnetes AutomationElement Objekt, das sich im Cache befindet.
FocusedElement (Statische Eigenschaft) Das AutomationElement , das den Eingabefokus besitzt.
RootElement (Statische Eigenschaft) Das Stamm- AutomationElement.

Siehe auch