Benutzeroberflächenautomatisierungs-Eigenschaften für Clients
Hinweis
Diese Dokumentation ist für .NET Framework-Entwickler konzipiert, die die verwalteten Klassen zur Automatisierung der Benutzeroberfläche verwenden möchten, die im Namespace System.Windows.Automation definiert sind. Aktuelle Informationen zur Automatisierung der Benutzeroberfläche finden Sie auf der Seite zur Windows-Automatisierungs-API: Benutzeroberflächenautomatisierung.
In dieser Übersicht werden Eigenschaften für die Benutzeroberflächenautomatisierung vorgestellt, die für entsprechende Clientanwendungen verfügbar gemacht werden.
Eigenschaften für AutomationElement-Objekte enthalten Informationen zu Benutzeroberflächenelementen (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.
Eigenschaften für die Benutzeroberflächenautomatisierung 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 Eigenschaftswerte von Steuerelementen und Steuerelementmustern zwischengespeichert werden, wenn AutomationElement -Objekte abgerufen werden. Weitere Informationen finden Sie unter Zwischenspeichern in Benutzeroberflächenautomatisierungs-Clients.
Eigenschaften-IDs
Eigenschaftenbezeichner (IDs) sind eindeutige, konstante Werte, die in AutomationProperty-Objekten gekapselt werden. Clientanwendungen für die Benutzeroberflächenautomatisierung rufen diese IDs aus der AutomationElement-Klasse oder aus der entsprechenden Steuerelementmusterklasse (beispielsweise ScrollPattern) ab. Benutzeroberflächenautomatisierungs-Anbieter 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 (Id) nicht untersuchen. Der programmgesteuerte Name (ProgrammaticName) wird nur zum Debuggen und für Diagnosezwecke verwendet.
Eigenschaftsbedingungen
Die Eigenschaften-IDs werden beim Erstellen von PropertyCondition-Objekten für die Suche nach AutomationElement-Objekten verwendet. 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 Steuerelementmustereigenschaft, 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 AutomationElementveranschaulicht.
// 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))
Um Eigenschaften von Steuerelementmustern abzurufen, die von AutomationElementunterstü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 zum Abrufen einer Eigenschaft eines Steuerelementmusters veranschaulicht.
// 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 Objectzurück. Die Anwendung muss das zurückgegebene Objekt in den richtigen Typ umwandeln, bevor der Wert verwendet wird.
Standardeigenschaftswerte
Wenn ein Anbieter für die Benutzeroberflächenautomatisierung eine Eigenschaft nicht implementiert, kann das System für die Benutzeroberflächenautomatisierung einen Standardwert bereitstellen. 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. Analog dazu gibt die Benutzeroberflächenautomatisierung false
zurück, wenn der Anbieter die durch IsDockPatternAvailableProperty identifizierte Eigenschaft nicht unterstützt.
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 die Benutzeroberflächenautomatisierung keinen Standardwert, sondern den speziellen Wert NotSupported zurück.
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.
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. Dies gibt ein Array von AutomationProperty -IDs zurück.
Durch geänderte Eigenschaften ausgelöste Ereignisse
Wenn sich ein Eigenschaftswert eines AutomationElement oder Steuerelementmusters ä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 Eigenschaft für die Benutzeroberflächenautomatisierung. 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 besitzt. |
RootElement | (Statische Eigenschaft) Das Stamm- AutomationElement. |