Egenskaper för gränssnittsautomatisering för klienter
Kommentar
Den här dokumentationen System.Windows.Automation är avsedd för .NET Framework-utvecklare som vill använda de hanterade UI Automation-klasserna som definierats i namnområdet. Den senaste informationen om UI Automation finns i Windows Automation API: UI Automation.
Den här översikten beskriver UI Automation-egenskaper när de exponeras för UI Automation-klientprogram.
Egenskaper för AutomationElement objekt innehåller information om användargränssnittselement (UI), vanligtvis kontroller. Egenskaperna för en AutomationElement är generiska, dvs. inte specifika för en kontrolltyp. Många av dessa egenskaper exponeras i AutomationElement.AutomationElementInformation strukturen.
Kontrollmönster har också egenskaper. Egenskaperna för kontrollmönster är specifika för mönstret. Till exempel ScrollPattern har egenskaper som gör att ett klientprogram kan identifiera om ett fönster är lodrätt eller vågrätt rullningsbart och vilka aktuella vystorlekar och rullningspositioner är. Kontrollmönster exponerar alla sina egenskaper genom en struktur. till exempel ScrollPattern.ScrollPatternInformation.
UI Automation-egenskaper är skrivskyddade. Om du vill ange egenskaper för en kontroll måste du använda metoderna för rätt kontrollmönster. Använd till exempel Scroll för att ändra positionsvärdena för ett rullningsfönster.
För att förbättra prestandan kan egenskapsvärden för kontroller och kontrollmönster cachelagras när AutomationElement objekt hämtas. Mer information finns i Cachelagring i UI Automation-klienter.
Egenskaps-ID:t
Egenskapsidentifierare (ID: er) är unika, konstanta värden som kapslas in i AutomationProperty objekt. UI Automation-klientprogram hämtar dessa ID:er från AutomationElement klassen eller från lämplig kontrollmönsterklass, till exempel ScrollPattern. UI Automation-leverantörer får dem från AutomationElementIdentifiers eller från någon av klasserna för kontrollmönsteridentifierare, till exempel ScrollPatternIdentifiers.
Det numeriska Id i en AutomationProperty används av leverantörer för att identifiera egenskaper som efterfrågas i IRawElementProviderSimple.GetPropertyValue metoden. I allmänhet behöver klientprogram inte undersöka Id. ProgrammaticName Används endast för felsökning och diagnostik.
Egenskapsvillkor
Egenskaps-ID:na används för att PropertyCondition konstruera objekt som används för att hitta AutomationElement objekt. Du kanske till exempel vill hitta en AutomationElement som har ett visst namn eller alla kontroller som är aktiverade. Var PropertyCondition och en anger en AutomationProperty identifierare och det värde som egenskapen måste matcha.
Mer information finns i följande referensavsnitt:
Hämtar egenskaper
Vissa egenskaper för AutomationElement och alla egenskaper för en kontrollmönsterklass exponeras som kapslade egenskaper för Current
egenskapen eller Cached
för AutomationElement objektet eller kontrollmönstret.
Dessutom kan alla AutomationElement eller kontrollmönsteregenskaper, inklusive en egenskap som inte är tillgänglig i Cached strukturen eller Current , hämtas med någon av följande metoder:
Dessa metoder ger något bättre prestanda samt åtkomst till alla egenskaper.
Följande kodexempel visar de två sätten att hämta en egenskap på en 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))
Om du vill hämta egenskaper för kontrollmönster som stöds av AutomationElementbehöver du inte hämta kontrollmönsterobjektet. Skicka bara en av mönsteregenskapsidentifierarna till metoden.
I följande kodexempel visas de två sätten att hämta en egenskap på ett kontrollmönster.
// 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))
Metoderna Get
returnerar en Object. Programmet måste omvandla det returnerade objektet till rätt typ innan värdet används.
Standardegenskapsvärden
Om en UI Automation-provider inte implementerar en egenskap kan UI Automation-systemet ange ett standardvärde. Om providern för en kontroll till exempel inte stöder egenskapen som identifieras av HelpTextPropertyreturnerar UI Automation en tom sträng. På samma sätt returnerar false
UI Automation om providern inte stöder egenskapen som identifieras av IsDockPatternAvailableProperty.
Du kan ändra det här beteendet med hjälp AutomationElement.GetCachedPropertyValue av metoden och AutomationElement.GetCurrentPropertyValue överlagringar. När du anger true
som den andra parametern returnerar UI Automation inte ett standardvärde, utan returnerar i stället specialvärdet NotSupported.
Följande exempelkod försöker hämta en egenskap från ett element, och om egenskapen inte stöds används ett programdefinierat värde i stället.
// 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)
Om du vill ta reda på vilka egenskaper som stöds av ett element använder du GetSupportedProperties. Detta returnerar en matris med AutomationProperty identifierare.
Egenskapsändringshändelser
När ett egenskapsvärde på ett AutomationElement eller kontrollmönster ändras utlöses en händelse. Ett program kan prenumerera på sådana händelser genom att anropa AddAutomationPropertyChangedEventHandleroch ange en matris med AutomationProperty identifierare som den sista parametern för att ange egenskaper av intresse.
AutomationPropertyChangedEventHandlerI kan du identifiera egenskapen som har ändrats genom att kontrollera Property medlemmen i händelseargumenten. Argumenten innehåller också de gamla och nya värdena för den UI Automation-egenskap som har ändrats. Dessa värden är av typen Object och måste omvandlas till rätt typ innan de används.
Ytterligare Egenskaper för AutomationElement
Förutom egenskapsstrukturerna CurrentAutomationElement och Cached har följande egenskaper, som hämtas via enkla egenskapsåtkomster.
Property | beskrivning |
---|---|
CachedChildren | En samling underordnade AutomationElement objekt som finns i cacheminnet. |
CachedParent | Ett överordnat AutomationElement objekt som finns i cacheminnet. |
FocusedElement | (Statisk egenskap) Som AutomationElement har indatafokus. |
RootElement | (Statisk egenskap) Roten AutomationElement. |