Vlastnosti automatizace uživatelského rozhraní pro klienty
Poznámka:
Tato dokumentace je určená pro vývojáře rozhraní .NET Framework, kteří chtějí používat spravované třídy model UI Automation definované v System.Windows.Automation oboru názvů. Nejnovější informace o model UI Automation najdete v tématu Rozhraní API služby Windows Automation: model UI Automation.
Tento přehled vás seznámí s model UI Automation vlastnostmi, protože jsou vystavené klientským aplikacím model UI Automation.
AutomationElement Vlastnosti objektů obsahují informace o prvcích uživatelského rozhraní (UI), obvykle ovládacích prvků. Vlastnosti jsou AutomationElement obecné, to znamená, že nejsou specifické pro typ ovládacího prvku. Mnoho z těchto vlastností je vystaveno ve struktuře AutomationElement.AutomationElementInformation .
Vzory ovládacích prvků mají také vlastnosti. Vlastnosti vzorů ovládacích prvků jsou specifické pro vzor. Obsahuje například vlastnosti, které klientské aplikaci umožňují zjistit, ScrollPattern jestli je okno svisle nebo vodorovně posuvné a jaké jsou aktuální velikosti zobrazení a pozice posouvání. Řídicí vzory zveřejňují všechny své vlastnosti prostřednictvím struktury; například ScrollPattern.ScrollPatternInformation.
model UI Automation vlastnosti jsou jen pro čtení. Chcete-li nastavit vlastnosti ovládacího prvku, je nutné použít metody příslušného vzoru ovládacího prvku. Můžete Scroll například změnit hodnoty pozice v okně posouvání.
Aby se zlepšil výkon, dají se hodnoty vlastností ovládacích prvků a vzorů ovládacích prvků ukládat do mezipaměti při AutomationElement načítání objektů. Další informace najdete v tématu Ukládání do mezipaměti v model UI Automation Klienti.
ID vlastností
Identifikátory vlastností (ID) jsou jedinečné, konstantní hodnoty zapouzdřené v AutomationProperty objektech. model UI Automation klientské aplikace získají tato ID z AutomationElement třídy nebo z příslušné třídy vzoru ovládacího prvku, například ScrollPattern. model UI Automation poskytovatelé je získají nebo AutomationElementIdentifiers z některé třídy identifikátorů řídicího vzoru, například ScrollPatternIdentifiers.
Číselnou hodnotu Id zprostředkovatele AutomationProperty používají k identifikaci vlastností, na které se v IRawElementProviderSimple.GetPropertyValue metodě dotazují. Obecně platí, že klientské aplikace nemusí zkoumat Id. Používá ProgrammaticName se pouze pro účely ladění a diagnostiky.
Podmínky vlastností
ID vlastností se používají při vytváření PropertyCondition objektů používaných k vyhledání AutomationElement objektů. Můžete například chtít najít ovládací AutomationElement prvky s určitým názvem nebo všechny povolené ovládací prvky. Každý PropertyCondition určuje AutomationProperty identifikátor a hodnotu, která se musí shodovat s vlastností.
Další informace najdete v následujících referenčních tématech:
Načítání vlastností
Některé vlastnosti AutomationElement třídy vzoru ovládacího prvku a všechny vlastnosti jsou vystaveny jako vnořené vlastnosti Current
nebo Cached
vlastnosti objektu AutomationElement vzoru nebo ovládacího prvku.
Kromě toho lze libovolnou AutomationElement nebo řídicí vlastnost, včetně vlastnosti, která není k dispozici ve CachedCurrent struktuře, načíst pomocí jedné z následujících metod:
Tyto metody nabízejí mírně lepší výkon i přístup k celému rozsahu vlastností.
Následující příklad kódu ukazuje dva způsoby načtení vlastnosti na objektu 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))
Chcete-li načíst vlastnosti vzorů ovládacích prvků podporované objektem AutomationElement, není nutné načíst objekt vzoru ovládacího prvku. Jednoduše předejte metodě jeden z identifikátorů vlastnosti vzoru.
Následující příklad kódu ukazuje dva způsoby načtení vlastnosti u vzoru ovládacího prvku.
// 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))
Metody Get
vrací znak .Object Aplikace musí před použitím hodnoty přetypovat vrácený objekt na správný typ.
Výchozí hodnoty vlastností
Pokud poskytovatel model UI Automation neimplementuje vlastnost, systém model UI Automation může zadat výchozí hodnotu. Pokud například zprostředkovatel ovládacího prvku nepodporuje vlastnost identifikovanou HelpTextPropertypomocí , model UI Automation vrátí prázdný řetězec. Podobně, pokud poskytovatel nepodporuje vlastnost identifikovanou IsDockPatternAvailableProperty, model UI Automation vrátí false
.
Toto chování můžete změnit pomocí AutomationElement.GetCachedPropertyValue přetížení metod a AutomationElement.GetCurrentPropertyValue metod. Pokud zadáte true
jako druhý parametr, model UI Automation nevrací výchozí hodnotu, ale místo toho vrátí speciální hodnotu NotSupported.
Následující příklad kódu se pokusí načíst vlastnost z elementu a pokud tato vlastnost není podporována, použije se místo toho hodnota definovaná aplikací.
// 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)
Chcete-li zjistit, které vlastnosti jsou podporovány elementem, použijte GetSupportedProperties. Tím se vrátí pole AutomationProperty identifikátorů.
Události změněné vlastností
Když se změní hodnota AutomationElement vlastnosti u vzoru ovládacího prvku, vyvolá se událost. Aplikace se může přihlásit k odběru takových událostí voláním AddAutomationPropertyChangedEventHandler, zadáním pole AutomationProperty identifikátorů jako poslední parametr, aby bylo možné určit vlastnosti zájmu.
V sadě AutomationPropertyChangedEventHandlermůžete identifikovat vlastnost, která se změnila, tím, že zkontrolujete Property člena argumentů události. Argumenty také obsahují staré a nové hodnoty vlastnosti model UI Automation, která se změnila. Tyto hodnoty jsou typu Object a musí být před použití přetypovány na správný typ.
Další vlastnosti AutomationElement
Kromě Current struktur AutomationElement a Cached vlastností má následující vlastnosti, které jsou načteny prostřednictvím jednoduchých přístupových objektů vlastností.
Vlastnost | Popis |
---|---|
CachedChildren | Kolekce podřízených AutomationElement objektů, které jsou v mezipaměti. |
CachedParent | Nadřazený AutomationElement objekt, který je v mezipaměti. |
FocusedElement | (Statická vlastnost) Ten AutomationElement má vstupní fokus. |
RootElement | (Statická vlastnost) Kořen AutomationElement. |