Sdílet prostřednictvím


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 automatizace uživatelského rozhraní definované v oboru názvů System.Windows.Automation. Nejnovější informace o automatizaci uživatelského rozhraní najdete v tématu rozhraní API služby Windows Automation: Automatizace uživatelského rozhraní.

Tento přehled vás seznámí s vlastnostmi automatizace uživatelského rozhraní, protože jsou přístupné klientským aplikacím automatizace uživatelského rozhraní.

AutomationElement Vlastnosti objektů obsahují informace o prvcích uživatelského rozhraní (UI), obvykle ovládacích prvků. Vlastnosti AutomationElement jsou obecné, což 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.

Vlastnosti automatizace uživatelského rozhraní 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. Například použijte Scroll ke změně hodnot 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 naleznete v tématu Ukládání do mezipaměti v klientech automatizace uživatelského rozhraní.

Identifikátory vlastností

Identifikátory vlastností (ID) jsou jedinečné, konstantní hodnoty zapouzdřené v AutomationProperty objektech. Klientské aplikace automatizace uživatelského rozhraní získávají tato ID z AutomationElement třídy nebo z příslušné třídy vzoru ovládacího prvku, například ScrollPattern. Poskytovatelé automatizace uživatelského rozhraní je získávají z AutomationElementIdentifiers nebo z některé z tříd identifikátorů vzorů ovládacích prvků, například ScrollPatternIdentifiers.

Číselný údaj Id poskytovatelé AutomationProperty používají k určení vlastností, o které se dotazují pomocí metody IRawElementProviderSimple.GetPropertyValue. 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 AutomationElement 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 a všechny vlastnosti třídy vzoru ovládacího prvku jsou vystaveny jako vnořené vlastnosti vlastnosti Current nebo Cached objektu AutomationElement nebo vzoru 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í Object. Aplikace musí před použitím hodnoty přetypovat vrácený objekt na správný typ.

Výchozí hodnoty vlastností

Pokud poskytovatel automatizace uživatelského rozhraní neimplementuje vlastnost, systém Automatizace uživatelského rozhraní může zadat výchozí hodnotu. Pokud například zprostředkovatel ovládacího prvku nepodporuje vlastnost identifikovanou pomocí HelpTextProperty, automatizace uživatelského rozhraní vrátí prázdný řetězec. Podobně pokud zprostředkovatel nepodporuje vlastnost identifikovanou IsDockPatternAvailablePropertypomocí , automatizace uživatelského rozhraní vrátí false.

Toto chování můžete změnit pomocí přetížení metod AutomationElement.GetCachedPropertyValue a AutomationElement.GetCurrentPropertyValue. Když zadáte true jako druhý parametr, automatizace uživatelského rozhraní 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 vyvolané změnou vlastnosti

Když se změní hodnota AutomationElement vlastnosti nebo kontrolního vzoru, 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 Automatizace uživatelského rozhraní, 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ě struktur Current a CachedAutomationElement následující vlastnosti, které jsou načteny prostřednictvím jednoduchých přístupových metod vlastností.

Vlastnictví Popis
CachedChildren Kolekce podřízených AutomationElement objektů, které jsou v mezipaměti.
CachedParent Rodičovský objekt AutomationElement, který je v mezipaměti.
FocusedElement (Statická vlastnost) Tento AutomationElement má vstupní fokus.
RootElement (Statická vlastnost) Kořen AutomationElement.

Viz také