Delen via


Eigenschappen van UI Automation voor clients

Notitie

Deze documentatie is bedoeld voor .NET Framework-ontwikkelaars die de beheerde UI Automation-klassen willen gebruiken die zijn gedefinieerd in de System.Windows.Automation naamruimte. Zie Windows Automation-API: UI Automation voor de meest recente informatie over UI Automation.

In dit overzicht maakt u kennis met UI Automation-eigenschappen wanneer deze worden blootgesteld aan UI Automation-clienttoepassingen.

Eigenschappen voor AutomationElement objecten bevatten informatie over elementen van de gebruikersinterface (UI), meestal besturingselementen. De eigenschappen van een AutomationElement besturingselement zijn algemeen, dat wil niet specifiek zijn voor een besturingselementtype. Veel van deze eigenschappen worden weergegeven in de AutomationElement.AutomationElementInformation structuur.

Controlepatronen hebben ook eigenschappen. De eigenschappen van besturingspatronen zijn specifiek voor het patroon. Heeft bijvoorbeeld ScrollPattern eigenschappen waarmee een clienttoepassing kan detecteren of een venster verticaal of horizontaal schuifbaar is en wat de huidige weergavegrootten en schuifposities zijn. Controlepatronen maken al hun eigenschappen zichtbaar via een structuur; bijvoorbeeld ScrollPattern.ScrollPatternInformation.

Eigenschappen van UI Automation zijn alleen-lezen. Als u eigenschappen van een besturingselement wilt instellen, moet u de methoden van het juiste besturingspatroon gebruiken. Gebruik Scroll bijvoorbeeld om de positiewaarden van een schuifvenster te wijzigen.

Om de prestaties te verbeteren, kunnen eigenschapswaarden van besturingselementen en besturingspatronen in de cache worden opgeslagen wanneer AutomationElement objecten worden opgehaald. Zie Caching in UI Automation-clients voor meer informatie.

Eigenschap-id's

Eigenschaps-id's (ID's) zijn unieke, constante waarden die zijn ingekapseld in AutomationProperty objecten. UI Automation-clienttoepassingen krijgen deze id's van de AutomationElement klasse of van de juiste controlepatroonklasse, zoals ScrollPattern. UI Automation-providers halen ze op uit AutomationElementIdentifiers of uit een van de klassen besturingspatroon-id's, zoals ScrollPatternIdentifiers.

De numerieke Id waarde van een bestand AutomationProperty wordt door providers gebruikt om eigenschappen te identificeren waarvoor een query wordt uitgevoerd in de IRawElementProviderSimple.GetPropertyValue methode. In het algemeen hoeven clienttoepassingen de Id. De ProgrammaticName wordt alleen gebruikt voor foutopsporing en diagnostische doeleinden.

Eigenschappenvoorwaarden

De eigenschap-id's worden gebruikt bij het maken van PropertyCondition objecten die worden gebruikt om objecten te zoeken AutomationElement . U kunt bijvoorbeeld zoeken naar een AutomationElement naam met een bepaalde naam of alle besturingselementen die zijn ingeschakeld. Elk PropertyCondition geeft een AutomationProperty id op en de waarde die de eigenschap moet overeenkomen.

Zie de volgende naslagonderwerpen voor meer informatie:

Eigenschappen ophalen

Sommige eigenschappen van AutomationElement en alle eigenschappen van een besturingselementpatroonklasse worden weergegeven als geneste eigenschappen van de Current of Cached eigenschap van het object of het AutomationElement besturingspatroonobject.

Bovendien kan een AutomationElement eigenschap of besturingselementpatroon, met inbegrip van een eigenschap die niet beschikbaar is in de Cached of Current structuur, worden opgehaald met behulp van een van de volgende methoden:

Deze methoden bieden iets betere prestaties en toegang tot het volledige scala aan eigenschappen.

In het volgende codevoorbeeld ziet u de twee manieren om een eigenschap op te halen op een 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))

Als u eigenschappen van besturingspatronen wilt ophalen die worden ondersteund door de AutomationElementbesturingspatronen, hoeft u het object van het besturingspatroon niet op te halen. Geef een van de id's van de patrooneigenschap door aan de methode.

In het volgende codevoorbeeld ziet u de twee manieren om een eigenschap op te halen voor een besturingselementpatroon.

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

De Get methoden retourneren een Object. De toepassing moet het geretourneerde object casten naar het juiste type voordat de waarde wordt gebruikt.

Standaardeigenschapswaarden

Als een UI Automation-provider geen eigenschap implementeert, kan het UI Automation-systeem een standaardwaarde opgeven. Als de provider voor een besturingselement bijvoorbeeld geen ondersteuning biedt voor de eigenschap die wordt geïdentificeerd door HelpTextPropertyUI Automation, wordt een lege tekenreeks geretourneerd. Als de provider de eigenschap die is geïdentificeerd IsDockPatternAvailablePropertyniet ondersteunt, retourneert falseUI Automation.

U kunt dit gedrag wijzigen met behulp van de en AutomationElement.GetCurrentPropertyValue overbelasting van methodenAutomationElement.GetCachedPropertyValue. Wanneer u opgeeft als de tweede parameter, retourneert true UI Automation geen standaardwaarde, maar wordt in plaats daarvan de speciale waarde NotSupportedgeretourneerd.

De volgende voorbeeldcode probeert een eigenschap op te halen uit een element en als de eigenschap niet wordt ondersteund, wordt in plaats daarvan een door de toepassing gedefinieerde waarde gebruikt.

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

Als u wilt ontdekken welke eigenschappen worden ondersteund door een element, gebruikt u GetSupportedProperties. Hiermee wordt een matrix met AutomationProperty id's geretourneerd.

Gebeurtenissen die zijn gewijzigd door eigenschappen

Wanneer een eigenschapswaarde voor een AutomationElement of controlepatroon verandert, wordt er een gebeurtenis gegenereerd. Een toepassing kan zich abonneren op dergelijke gebeurtenissen door AddAutomationPropertyChangedEventHandlereen matrix met AutomationProperty id's op te geven als laatste parameter om de eigenschappen van belang op te geven.

In de AutomationPropertyChangedEventHandlerlijst kunt u de eigenschap identificeren die is gewijzigd door het Property lid van de gebeurtenisargumenten te controleren. De argumenten bevatten ook de oude en nieuwe waarden van de eigenschap UI Automation die is gewijzigd. Deze waarden zijn van het type Object en moeten worden omgezet naar het juiste type voordat ze worden gebruikt.

Aanvullende AutomationElement-eigenschappen

Naast de Current eigenschapsstructuren en Cached de eigenschapsstructuren, AutomationElement hebben de volgende eigenschappen, die worden opgehaald via eenvoudige eigenschapstoegangsors.

Eigenschappen Beschrijving
CachedChildren Een verzameling onderliggende AutomationElement objecten die zich in de cache bevinden.
CachedParent Een AutomationElement bovenliggend object dat zich in de cache bevindt.
FocusedElement (Statische eigenschap) De AutomationElement invoerfocus heeft.
RootElement (Statische eigenschap) De hoofdmap AutomationElement.

Zie ook