Sdílet prostřednictvím


Automatizace uživatelského rozhraní a technologie Microsoft Active Accessibility

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.

Microsoft Active Accessibility byl dřívějším řešením pro zpřístupnění aplikací. Microsoft model UI Automation je nový model přístupnosti pro Microsoft Windows a je určený k řešení potřeb produktů technologie usnadnění a automatizovaných testovacích nástrojů. model UI Automation nabízí mnoho vylepšení v režimu aktivní přístupnosti.

Toto téma obsahuje hlavní funkce model UI Automation a vysvětluje, jak se tyto funkce liší od funkce Aktivní přístupnost.

Programovací jazyky

Aktivní přístupnost je založená na modelu COM (Component Object Model) s podporou duálních rozhraní, a proto je programovatelný v jazyce C/C++, Microsoft Visual Basic 6.0 a skriptovací jazyky. model UI Automation (včetně knihovny zprostředkovatele na straně klienta pro standardní ovládací prvky) je napsaná ve spravovaném kódu a model UI Automation klientské aplikace jsou nejsnážněji naprogramované pomocí jazyka C# nebo Visual Basic .NET. model UI Automation zprostředkovatelé, které jsou implementacemi rozhraní, lze psát ve spravovaném kódu nebo v jazyce C/C++.

Podpora ve Windows Presentation Foundation

Windows Presentation Foundation (WPF) je nový model pro vytváření uživatelských rozhraní. Prvky WPF neobsahují nativní podporu aktivní přístupnosti; podporují však model UI Automation, což zahrnuje podporu přemostění klientů active accessibility. Pouze klienti napsaní speciálně pro model UI Automation můžou plně využívat funkce přístupnosti WPF, jako je podpora formátovaného textu.

Servery a klienti

V aktivní přístupnosti komunikují servery a klienti přímo prostřednictvím implementace IAccessibleserveru .

V model UI Automation základní služba leží mezi serverem (označovaným jako poskytovatel) a klientem. Základní služba volá rozhraní implementovaná poskytovateli a poskytuje další služby, jako je generování jedinečných identifikátorů modulu runtime pro prvky. Klientské aplikace používají funkce knihovny k volání model UI Automation služby.

model UI Automation můžou poskytovatelé poskytovat informace klientům služby Active Accessibility a servery active accessibility můžou poskytovat informace model UI Automation klientským aplikacím. Vzhledem k tomu, že aktivní přístupnost nezpřístupňuje tolik informací jako model UI Automation, nejsou tyto dva modely plně kompatibilní.

Prvky uživatelského rozhraní

Aktivní přístupnost představuje prvky uživatelského rozhraní buď jako IAccessible rozhraní, nebo jako podřízený identifikátor. Je obtížné porovnat dva IAccessible ukazatele určit, zda odkazují na stejný prvek.

V model UI Automation je každý prvek reprezentován jako AutomationElement objekt. Porovnání se provádí pomocí operátoru Equals rovnosti nebo metody, z nichž obě porovnávají jedinečné identifikátory modulu runtime prvků.

Stromová zobrazení a navigace

Prvky uživatelského rozhraní (UI) na obrazovce lze považovat za stromovou strukturu s plochou jako kořen, okna aplikací jako bezprostřední podřízené položky a prvky v aplikacích jako další potomky.

Ve funkci Aktivní přístupnost je ve stromu vystaveno mnoho prvků automatizace, které nejsou pro koncové uživatele relevantní. Klientské aplikace se musí podívat na všechny prvky, které mají smysl určit.

model UI Automation klientské aplikace uvidí uživatelské rozhraní prostřednictvím filtrovaného zobrazení. Zobrazení obsahuje pouze prvky zájmu: ty, které poskytují informace uživateli nebo umožňují interakci. Předdefinovaná zobrazení pouze řídicích prvků a jsou k dispozici pouze prvky obsahu; Kromě toho můžou aplikace definovat vlastní zobrazení. model UI Automation zjednodušuje popis uživatelského rozhraní uživateli a pomáhá uživateli pracovat s aplikací.

Navigace mezi prvky, které jsou v aktivní přístupnosti, je prostorová (například přechod na prvek, který leží vlevo na obrazovce), logický (například přechod na další položku nabídky nebo další položku v pořadí ovládacích prvků v dialogovém okně) nebo hierarchický (například přesunutí prvního podřízeného prvku v kontejneru nebo z podřízené položky do nadřazeného prvku). Hierarchická navigace je komplikovaná skutečností, že podřízené prvky nejsou vždy objekty, které implementují IAccessible.

V model UI Automation jsou AutomationElement všechny prvky uživatelského rozhraní objekty, které podporují stejné základní funkce. (Z hlediska poskytovatele jsou objekty, které implementují rozhraní zděděné z IRawElementProviderSimple.) Navigace je hlavně hierarchická: od rodičů k podřízeným a od jednoho na stejné straně k dalšímu. (Navigace mezi elementy na stejné úrovni má logický prvek, protože může následovat podle pořadí ovládacích prvků.) Pomocí libovolného výchozího bodu můžete pomocí libovolného filtrovaného zobrazení stromu TreeWalker použít třídu. Můžete také přejít na konkrétní podřízené nebo potomky pomocí a FindFirstFindAll; například je velmi snadné načíst všechny prvky v dialogovém okně, které podporují zadaný vzor ovládacího prvku.

Navigace v model UI Automation je konzistentnější než v režimu aktivní přístupnosti. Některé prvky, jako jsou rozevírací seznamy a automaticky otevíraná okna, se ve stromu aktivní přístupnosti zobrazují dvakrát a navigace z nich může mít neočekávané výsledky. Ve skutečnosti není možné správně implementovat aktivní přístupnost pro ovládací prvek panelu. model UI Automation umožňuje přeusťování a přemísťování, aby prvek mohl být umístěn kdekoli ve stromu i přes hierarchii uloženou vlastnictvím oken.

Role a typy ovládacích prvků

Funkce Active Accessibility používá accRole vlastnost (IAccessible::get_actRole) k načtení popisu role elementu v uživatelském rozhraní, například ROLE_SYSTEM_SLIDER nebo ROLE_SYSTEM_MENUITEM. Role prvku je hlavním vodítkem pro jeho dostupné funkce. Interakce s ovládacím prvek se dosahuje pomocí pevných metod, jako IAccessible::accSelectIAccessible::accDoDefaultActionjsou a . Interakce mezi klientskou aplikací a uživatelským rozhraním je omezená na to, co lze provést prostřednictvím IAccessible.

Naproti tomu model UI Automation do značné míry oddělí typ ovládacího prvku (popsaný ControlType vlastností) od jeho očekávané funkce. Funkce jsou určeny vzory ovládacích prvků, které poskytovatel podporuje prostřednictvím své implementace specializovaných rozhraní. Vzory ovládacích prvků lze kombinovat a popsat úplnou sadu funkcí podporovaných konkrétním prvkem uživatelského rozhraní. Někteří poskytovatelé jsou povinni podporovat určitý vzor kontroly; Například zprostředkovatel zaškrtávacího políčka musí podporovat model přepínacího ovládacího prvku. K podpoře jedné nebo více množiny řídicích vzorů se vyžadují další poskytovatelé; Například tlačítko musí podporovat přepínač nebo vyvolat. Ostatní stále nepodporují žádné řídicí vzory vůbec; Například podokno, které nelze přesunout, změnit jeho velikost nebo ukotvit, nemá žádné vzory ovládacích prvků.

model UI Automation podporuje vlastní ovládací prvky, které jsou identifikované Custom vlastností a mohou být popsány vlastnostíLocalizedControlTypeProperty.

Následující tabulka ukazuje mapování rolí aktivní přístupnosti na model UI Automation typy ovládacích prvků.

Aktivní role přístupnosti typ ovládacího prvku model UI Automation
ROLE_SYSTEM_PUSHBUTTON Tlačítko
ROLE_SYSTEM_CLIENT Calendar
ROLE_SYSTEM_CHECKBUTTON Zašk.políčko
ROLE_SYSTEM_COMBOBOX Kombinované pole
ROLE_SYSTEM_CLIENT Vlastní
ROLE_SYSTEM_LIST Datová mřížka
ROLE_SYSTEM_LISTITEM Datová položka
ROLE_SYSTEM_DOCUMENT Dokument
ROLE_SYSTEM_TEXT Upravit
ROLE_SYSTEM_GROUPING Seskupit
ROLE_SYSTEM_LIST Hlavička
ROLE_SYSTEM_COLUMNHEADER Položka záhlaví
ROLE_SYSTEM_LINK Hypertextový odkaz
ROLE_SYSTEM_GRAPHIC Image
ROLE_SYSTEM_LIST List
ROLE_SYSTEM_LISTITEM Položka seznamu
ROLE_SYSTEM_MENUPOPUP Nabídka
ROLE_SYSTEM_MENUBAR Nabídek
ROLE_SYSTEM_MENUITEM Položka nabídky
ROLE_SYSTEM_PANE Podokno
ROLE_SYSTEM_PROGRESSBAR Indikátor průběhu
ROLE_SYSTEM_RADIOBUTTON Radio button
ROLE_SYSTEM_SCROLLBAR Posuvník
ROLE_SYSTEM_SEPARATOR Oddělovač
ROLE_SYSTEM_SLIDER Posuvník
ROLE_SYSTEM_SPINBUTTON Rotující indikátor průběhu
ROLE_SYSTEM_SPLITBUTTON Tlačítko Rozdělit
ROLE_SYSTEM_STATUSBAR Stavovém
ROLE_SYSTEM_PAGETABLIST Tab
ROLE_SYSTEM_PAGETAB Položka karty
ROLE_SYSTEM_TABLE Table
ROLE_SYSTEM_STATICTEXT Text
ROLE_SYSTEM_INDICATOR Jezdec
ROLE_SYSTEM_TITLEBAR Záhlaví
ROLE_SYSTEM_TOOLBAR Panel nástrojů
ROLE_SYSTEM_TOOLTIP Popisy tlačítek
ROLE_SYSTEM_OUTLINE Strom
ROLE_SYSTEM_OUTLINEITEM Položka stromu
ROLE_SYSTEM_WINDOW Okno

Další informace o různých typech ovládacích prvků najdete v tématu model UI Automation Typy ovládacích prvků.

Stavy a vlastnosti

V režimu Aktivní přístupnost podporují prvky společnou sadu vlastností a některé vlastnosti (například accState) musí popisovat velmi různé věci v závislosti na roli elementu. Servery musí implementovat všechny metody IAccessible , které vracejí vlastnost, i ty, které nejsou relevantní pro prvek.

model UI Automation definuje mnoho dalších vlastností, z nichž některé odpovídají stavům v aktivní přístupnosti. Některé jsou společné pro všechny prvky, ale jiné jsou specifické pro typy ovládacích prvků a vzory ovládacích prvků. Vlastnosti jsou odlišeny jedinečnými identifikátory a většinu vlastností lze načíst pomocí jedné metody nebo GetCurrentPropertyValueGetCachedPropertyValue. Mnoho vlastností je také možné snadno načíst z Current přístupových objektů a Cached vlastností.

Zprostředkovatel model UI Automation nemusí implementovat irelevantní vlastnosti, ale může jednoduše vrátit null hodnotu pro všechny vlastnosti, které nepodporuje. Základní služba model UI Automation může také získat některé vlastnosti od výchozího zprostředkovatele okna a jsou amalgamované s vlastnostmi explicitně implementovanými poskytovatelem.

Stejně jako podpora mnoha dalších vlastností poskytuje model UI Automation lepší výkon tím, že umožňuje načtení více vlastností s jedním voláním mezi procesy.

Následující tabulka ukazuje korespondenci mezi vlastnostmi v těchto dvou modelech.

Přístup k vlastnostem aktivní přístupnosti ID vlastnosti model UI Automation Poznámky
get_accKeyboardShortcut AccessKeyProperty nebo AcceleratorKeyProperty AccessKeyProperty má přednost, pokud jsou přítomny oba.
get_accName NameProperty
get_accRole ControlTypeProperty V předchozí tabulce najdete mapování rolí na typy ovládacích prvků.
get_accValue ValuePattern.ValueProperty

RangeValuePattern.ValueProperty
Platné pouze pro typy ovládacích prvků, které podporují ValuePattern nebo RangeValuePattern. Hodnoty RangeValue jsou normalizovány na 0–100, aby byly konzistentní s chováním MSAA. Položky hodnot používají řetězec.
get_accHelp HelpTextProperty
accLocation BoundingRectangleProperty
get_accDescription V model UI Automation se nepodporuje accDescription nemá v rámci MSAA jasnou specifikaci, což vedlo k tomu, že poskytovatelé do této vlastnosti umístili různé údaje.
get_accHelpTopic V model UI Automation se nepodporuje

Následující tabulka ukazuje, které vlastnosti model UI Automation odpovídají konstantám stavu aktivní přístupnosti.

Stav aktivní přístupnosti vlastnost model UI Automation Aktivuje změnu stavu?
STATE_SYSTEM_CHECKED Zaškrtávací políčko ToggleStateProperty

Pro přepínač, IsSelectedProperty
Y
STATE_SYSTEM_COLLAPSED ExpandCollapseState = Collapsed Y
STATE_SYSTEM_EXPANDED ExpandCollapseState = Expanded nebo PartiallyExpanded Y
STATE_SYSTEM_FOCUSABLE IsKeyboardFocusableProperty N
STATE_SYSTEM_FOCUSED HasKeyboardFocusProperty N
STATE_SYSTEM_HASPOPUP ExpandCollapsePattern pro položky nabídky N
STATE_SYSTEM_INVISIBLE IsOffscreenProperty = Pravda a GetClickablePoint příčiny NoClickablePointException N
STATE_SYSTEM_LINKED ControlTypeProperty =

Hyperlink
N
STATE_SYSTEM_MIXED ToggleState = Indeterminate N
STATE_SYSTEM_MOVEABLE CanMoveProperty N
STATE_SYSTEM_MUTLISELECTABLE CanSelectMultipleProperty N
STATE_SYSTEM_OFFSCREEN IsOffscreenProperty = Pravda N
STATE_SYSTEM_PROTECTED IsPasswordProperty N
STATE_SYSTEM_READONLY RangeValuePattern.IsReadOnlyProperty a ValuePattern.IsReadOnlyProperty N
STATE_SYSTEM_SELECTABLE SelectionItemPattern je podporováno. N
STATE_SYSTEM_SELECTED IsSelectedProperty N
STATE_SYSTEM_SIZEABLE CanResize N
STATE_SYSTEM_UNAVAILABLE IsEnabledProperty Y

Následující stavy buď nebyly implementovány většinou serverů řízení přístupnosti, nebo nemají v model UI Automation žádný ekvivalent.

Stav aktivní přístupnosti Poznámky
STATE_SYSTEM_BUSY Není k dispozici v model UI Automation
STATE_SYSTEM_DEFAULT Není k dispozici v model UI Automation
STATE_SYSTEM_ANIMATED Není k dispozici v model UI Automation
STATE_SYSTEM_EXTSELECTABLE Servery s aktivní přístupností nejsou široce implementované
STATE_SYSTEM_MARQUEED Servery s aktivní přístupností nejsou široce implementované
STATE_SYSTEM_SELFVOICING Servery s aktivní přístupností nejsou široce implementované
STATE_SYSTEM_TRAVERSED Není k dispozici v model UI Automation
STATE_SYSTEM_ALERT_HIGH Servery s aktivní přístupností nejsou široce implementované
STATE_SYSTEM_ALERT_MEDIUM Servery s aktivní přístupností nejsou široce implementované
STATE_SYSTEM_ALERT_LOW Servery s aktivní přístupností nejsou široce implementované
STATE_SYSTEM_FLOATING Servery s aktivní přístupností nejsou široce implementované
STATE_SYSTEM_HOTTRACKED Není k dispozici v model UI Automation
STATE_SYSTEM_PRESSED Není k dispozici v model UI Automation

Úplný seznam identifikátorů vlastností model UI Automation najdete v tématu model UI Automation Přehled vlastností.

Událost

Mechanismus událostí v model UI Automation, na rozdíl od toho, že v active accessibility, nespoléhá na směrování událostí Systému Windows (které je úzce svázané s popisovači oken) a nevyžaduje klientské aplikace k nastavení připojení. Odběry událostí je možné doladit nejen na konkrétní události, ale i na konkrétní části stromu. Poskytovatelé můžou také doladit své zvyšování událostí tím, že sledují, jaké události se naslouchají.

Klienti také snadněji načtou prvky, které vyvolávají události, protože se předávají přímo zpětnému volání události. Vlastnosti elementu se automaticky načítají, pokud byl požadavek na mezipaměť aktivní, když se klient přihlásil k odběru události.

Následující tabulka uvádí korespondenci událostí WinEvents a model UI Automation přístupnosti.

WinEvent identifikátor události model UI Automation
EVENT_OBJECT_ACCELERATORCHANGE AcceleratorKeyProperty změna vlastnosti
EVENT_OBJECT_CONTENTSCROLLED VerticalScrollPercentProperty nebo HorizontalScrollPercentProperty změna vlastnosti u přidružených posuvníků
EVENT_OBJECT_CREATE StructureChangedEvent
EVENT_OBJECT_DEFACTIONCHANGE Žádný ekvivalent
EVENT_OBJECT_DESCRIPTIONCHANGE Žádný přesný ekvivalent; možná HelpTextProperty nebo LocalizedControlTypeProperty změna vlastnosti
EVENT_OBJECT_DESTROY StructureChangedEvent
EVENT_OBJECT_FOCUS AutomationFocusChangedEvent
EVENT_OBJECT_HELPCHANGE HelpTextProperty Změnit
EVENT_OBJECT_HIDE StructureChangedEvent
EVENT_OBJECT_LOCATIONCHANGE BoundingRectangleProperty změna vlastnosti
EVENT_OBJECT_NAMECHANGE NameProperty změna vlastnosti
EVENT_OBJECT_PARENTCHANGE StructureChangedEvent
EVENT_OBJECT_REORDER Nepoužívá se konzistentně v režimu aktivní přístupnosti. V model UI Automation není definována žádná přímo odpovídající událost.
EVENT_OBJECT_SELECTION ElementSelectedEvent
EVENT_OBJECT_SELECTIONADD ElementAddedToSelectionEvent
EVENT_OBJECT_SELECTIONREMOVE ElementRemovedFromSelectionEvent
EVENT_OBJECT_SELECTIONWITHIN Žádný ekvivalent
EVENT_OBJECT_SHOW StructureChangedEvent
EVENT_OBJECT_STATECHANGE Různé události změněné vlastností
EVENT_OBJECT_VALUECHANGE RangeValuePattern.ValueProperty a ValuePattern.ValueProperty změněno
EVENT_SYSTEM_ALERT Žádný ekvivalent
EVENT_SYSTEM_CAPTUREEND Žádný ekvivalent
EVENT_SYSTEM_CAPTURESTART Žádný ekvivalent
EVENT_SYSTEM_CONTEXTHELPEND Žádný ekvivalent
EVENT_SYSTEM_CONTEXTHELPSTART Žádný ekvivalent
EVENT_SYSTEM_DIALOGEND WindowClosedEvent
EVENT_SYSTEM_DIALOGSTART WindowOpenedEvent
EVENT_SYSTEM_DRAGDROPEND Žádný ekvivalent
EVENT_SYSTEM_DRAGDROPSTART Žádný ekvivalent
EVENT_SYSTEM_FOREGROUND AutomationFocusChangedEvent
EVENT_SYSTEM_MENUEND MenuClosedEvent
EVENT_SYSTEM_MENUPOPUPEND MenuClosedEvent
EVENT_SYSTEM_MENUPOPUPSTART MenuOpenedEvent
EVENT_SYSTEM_MENUSTART MenuOpenedEvent
EVENT_SYSTEM_MINIMIZEEND WindowVisualStateProperty změna vlastnosti
EVENT_SYSTEM_MINIMIZESTART WindowVisualStateProperty změna vlastnosti
EVENT_SYSTEM_MOVESIZEEND BoundingRectangleProperty změna vlastnosti
EVENT_SYSTEM_MOVESIZESTART BoundingRectangleProperty změna vlastnosti
EVENT_SYSTEM_SCROLLINGEND VerticalScrollPercentProperty nebo HorizontalScrollPercentProperty změna vlastnosti
EVENT_SYSTEM_SCROLLINGSTART VerticalScrollPercentProperty nebo HorizontalScrollPercentProperty změna vlastnosti
EVENT_SYSTEM_SOUND Žádný ekvivalent
EVENT_SYSTEM_SWITCHEND Žádný ekvivalent, ale AutomationFocusChangedEvent signály událostí, že nová aplikace obdržela fokus
EVENT_SYSTEM_SWITCHSTART Žádný ekvivalent
Žádný ekvivalent CurrentViewProperty změna vlastnosti
Žádný ekvivalent HorizontallyScrollableProperty změna vlastnosti
Žádný ekvivalent VerticallyScrollableProperty změna vlastnosti
Žádný ekvivalent HorizontalScrollPercentProperty změna vlastnosti
Žádný ekvivalent VerticalScrollPercentProperty změna vlastnosti
Žádný ekvivalent HorizontalViewSizeProperty změna vlastnosti
Žádný ekvivalent VerticalViewSizeProperty změna vlastnosti
Žádný ekvivalent ToggleStateProperty změna vlastnosti
Žádný ekvivalent WindowVisualStateProperty změna vlastnosti
Žádný ekvivalent AsyncContentLoadedEvent Událost
Žádný ekvivalent ToolTipOpenedEvent

Zabezpečení

Některé IAccessible scénáře přizpůsobení vyžadují zabalení základu IAccessible a volání do něj. To má vliv na zabezpečení, protože částečně důvěryhodná komponenta by neměla být zprostředkující cestou kódu.

Model model UI Automation eliminuje potřebu, aby poskytovatelé volali do jiného kódu zprostředkovatele. Základní služba model UI Automation provede veškerou potřebnou agregaci.

Viz také