Automatizace uživatelského rozhraní a aktivní přístupnost
Microsoft Active Accessibility je starší verze rozhraní API, které bylo zavedeno v systému Windows 95 a bylo navržené tak, aby byly aplikace pro Windows přístupné. Microsoft UI Automation je nový model přístupnosti pro Windows a je určený k řešení potřeb produktů technologie usnadnění a automatizovaných testovacích nástrojů. Automatizace uživatelského rozhraní nabízí mnoho vylepšení v technologii Microsoft Active Accessibility. Toto téma vysvětluje rozdíly mezi těmito dvěma technologiemi.
Toto téma obsahuje následující části.
- programovací jazyky
- servery a klienti
- prvky uživatelského rozhraní
- stromové zobrazení a navigační
- role a typy ovládacích prvků
- stavy a vlastnosti
- událostí
- přístup k aktivním vlastnostem a objektům přístupnosti z automatizace uživatelského rozhraní
- související témata
Programovací jazyky
Microsoft Active Accessibility je založen na modelu COM (Component Object Model) s podporou duálních rozhraní, a proto je programovatelný v jazyce C/C++ a skriptovací jazyky.
Když byla zavedena automatizace uživatelského rozhraní, klientské rozhraní API bylo omezeno na spravovaný kód, zatímco rozhraní API zprostředkovatele zahrnovalo spravované i nespravované implementace. V systému Windows 7 byla zavedena nová klientská rozhraní API založená na modelu COM, aby bylo snazší programovat klientské aplikace automatizace uživatelského rozhraní v jazyce C/C++.
Servery a klienti
Ve službě Microsoft Active Accessibility komunikují servery a klienti přímo prostřednictvím implementace serveru IAccessible rozhraní.
Ve službě Automatizace uživatelského rozhraní se základní služba nachází mezi serverem (poskytovatelem) a klientem. Základní služba volá rozhraní implementovaná poskytovateli a poskytuje další služby, jako je generování jedinečných identifikátorů za běhu pro prvky uživatelského rozhraní. Klientské aplikace získají přístup k této základní službě vytvořením objektu CUIAutomation. Tento objekt podporuje sadu klientských rozhraní, která jsou oddělená od rozhraní zprostředkovatele. Další informace naleznete v tématu Vytvoření objektu CUIAutomation.
Poskytovatelé automatizace uživatelského rozhraní mohou poskytovat informace klientům Microsoft Active Accessibility a servery Microsoft Active Accessibility mohou poskytovat informace klientským aplikacím automatizace uživatelského rozhraní. Vzhledem k tomu, že microsoft Active Accessibility nezpřístupňuje tolik informací jako automatizace uživatelského rozhraní, nejsou tyto dva modely plně kompatibilní.
Prvky uživatelského rozhraní
Microsoft Active Accessibility představuje prvek uživatelského rozhraní jako IAccessible interface spárované s podřízeným identifikátorem. Je obtížné porovnat dva IAccessible ukazatele určit, zda odkazují na stejný prvek.
Ve službě Automatizace uživatelského rozhraní je každý prvek reprezentován jako objekt, který zveřejňuje rozhraní IUIAutomationElement klientům. Prvky lze porovnat pomocí jejich identifikátorů za běhu, které jsou načteny pomocí IUIAutomationElement::GetRuntimeId.
Stromová zobrazení a navigace
Prvky uživatelského rozhraní 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 službě Microsoft Active Accessibility je ve stromové struktuře vystaveno mnoho prvků uživatelského rozhraní, které nejsou pro koncové uživatele relevantní. Klientské aplikace musí prozkoumat všechny prvky ve stromu a určit, které prvky mají smysl.
Klientské aplikace automatizace uživatelského rozhraní vidí uživatelské rozhraní prostřednictvím filtrovaného zobrazení. Zobrazení obsahuje pouze prvky, které uživateli poskytují informace nebo se kterými může uživatel pracovat. Předdefinovaná zobrazení, která obsahují pouze ovládací prvky a pouze prvky obsahu, jsou k dispozici a klientské aplikace mohou definovat vlastní zobrazení. Automatizace uživatelského rozhraní usnadňuje popis uživatelského rozhraní uživateli a pomáhá uživateli pracovat s aplikacemi.
V microsoft Active Accessibility je navigace mezi elementy 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í karet v dialogovém okně nebo hierarchický, například přechod na první podřízený prvek v kontejneru nebo z podřízeného prvku na nadřazený prvek. Hierarchická navigace je složitá skutečností, že podřízené prvky nejsou vždy objekty, které implementují IAccessible.
Ve automatizaci uživatelského rozhraní jsou všechny prvky uživatelského rozhraní objekty COM, které zpřístupňují IUIAutomationElement rozhraní a podporují stejné základní funkce. Z hlediska zprostředkovatele objekty COM implementují rozhraní, které je zděděno z IRawElementProviderSimple. Navigace je především hierarchická; to znamená, od rodičů po děti a od jednoho na stejné straně k dalšímu. Navigace mezi elementy na stejné úrovni má ale logický prvek, protože může následovat podle pořadí ovládacích prvků. Klient může přecházet z libovolného výchozího bodu pomocí libovolného filtrovaného zobrazení stromu pomocí IUIAutomationTreeWalker. Klient může také přejít na konkrétní podřízené nebo potomky pomocí IUIAutomationElement::FindFirst a IUIAutomationElement::FindAll. Například je snadné načíst všechny prvky v dialogovém okně, které podporují zadaný vzor ovládacího prvku.
Navigace v automatizaci uživatelského rozhraní je konzistentnější než v microsoft Active Accessibility. Některé prvky, jako jsou rozevírací seznamy a automaticky otevíraná okna, se ve stromu Microsoft Active Accessibility zobrazují dvakrát a navigace z těchto prvků může mít neočekávané výsledky. Pro ovládací prvek panelu je obtížné správně implementovat funkci Microsoft Active Accessibility. Automatizace uživatelského rozhraní umožňuje přeusťování a přemísťování, aby prvek mohl být umístěn kdekoli ve stromu, a to i přes hierarchii uloženou vlastnictvím oken.
Role a typy ovládacích prvků
Microsoft Active Accessibility používá vlastnost accRole (IAccessible::get_accRole) k načtení popisu role prvku 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 je IAccessible::accSelect a IAccessible::accDoDefaultAction. Interakce mezi klientskou aplikací a uživatelským rozhraním je omezená na to, co lze provést prostřednictvím IAccessible.
Automatizace uživatelského rozhraní naproti tomu odděluje typ ovládacího prvku, který je popsán IUIAutomationElement::CurrentControlType (nebo IUIAutomationElement::CachedControlType) 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, aby bylo možné popsat úplnou sadu funkcí podporovaných konkrétním prvkem uživatelského rozhraní. Někteří poskytovatelé musí podporovat konkrétní vzor kontroly. Například zprostředkovatel zaškrtávacího políčka musí podporovat Přepnout ovládacím vzorem. K podpoře jedné nebo více množiny řídicích vzorů se vyžadují další zprostředkovatelé. Například tlačítko musí podporovat přepínač nebo vyvolat ovládacím vzorem. Ostatní stále nepodporují žádné řídicí vzory. Například podokno, které nelze přesunout, změnit jeho velikost nebo ukotvit, neobsahuje žádné vzory ovládacích prvků.
Automatizace uživatelského rozhraní podporuje vlastní ovládací prvky, které jsou identifikovány konstantou UIA_CustomControlTypeId a mohou být popsány vlastností IUIAutomationElement::CurrentLocalizedControlType (nebo IUIAutomationElement::CachedLocalizedControlType).
Následující tabulka mapuje role objektů Microsoft Active Accessibility na typy ovládacích prvků automatizace uživatelského rozhraní.
Stavy a vlastnosti
Prvky Microsoft Active Accessibility podporují společnou sadu vlastností. Některé vlastnosti, například accState, musí popisovat různé podmínky v závislosti na roli prvku. Servery musí implementovat všechny metody IAccessible, které vracejí vlastnost, i ty vlastnosti, které nejsou relevantní pro prvek.
Automatizace uživatelského rozhraní definuje další vlastnosti, z nichž některé odpovídají stavům v microsoft Active Accessibility. Některé vlastnosti jsou společné pro všechny prvky, ale jiné vlastnosti jsou specifické pro typy ovládacích prvků a vzory ovládacích prvků. Zprostředkovatel automatizace uživatelského rozhraní nemusí implementovat irelevantní vlastnosti, ale může vrátit hodnotu null pro všechny vlastnosti, které nepodporuje. Základní služba automatizace uživatelského rozhraní může získat některé vlastnosti od výchozího zprostředkovatele okna a jsou amalgamované s vlastnostmi explicitně implementovanými poskytovatelem.
Automatizace uživatelského rozhraní také podporuje mnoho dalších vlastností a umožňuje lepší výkon tím, že umožňuje ukládání vlastností do mezipaměti.
Následující tabulka ukazuje korespondenci mezi některými vlastnostmi v těchto dvou modelech. Popis ID vlastností automatizace uživatelského rozhraní najdete v tématu identifikátory vlastností elementu Automation.
Přístup k vlastnostem aktivní přístupnosti | ID vlastnosti Automatizace uživatelského rozhraní | Poznámky |
---|---|---|
get_accKeyboardShortcut | UIA_AccessKeyPropertyId nebo UIA_AcceleratorKeyPropertyId | UIA_AccessKeyPropertyId má přednost, pokud jsou k dispozici oba. |
get_accName | UIA_NamePropertyId | |
get_accRole | UIA_ControlTypePropertyId | Viz předchozí tabulka mapování rolí na typy řízení. |
get_accValue | UIA_ValueValuePropertyId nebo UIA_RangeValueValuePropertyId | Platné pouze pro typy ovládacích prvků, které podporují IUIAutomationValuePattern nebo IUIAutomationRangeValuePattern. Hodnoty rozsahu jsou normalizovány na 0–100, aby byly konzistentní s chováním Microsoft Active Accessibility. Hodnoty jsou reprezentovány jako řetězce. |
get_accHelp | UIA_HelpTextPropertyId | |
accLocation | UIA_BoundingRectanglePropertyId | |
get_accDescription | Nepodporuje se. | AccDescription neměl v aplikaci Microsoft Active Accessibility jasnou specifikaci, což vedlo k tomu, že servery umísťovaly do této vlastnosti různé části informací. |
get_accHelpTopic | Nepodporuje se. |
Následující tabulka ukazuje ID vlastností automatizace uživatelského rozhraní, které odpovídají konstantám stavu objektu microsoft Active Accessibility .
Úplný seznam ID vlastností najdete v tématu Identifikátory vlastností.
Dění
Na rozdíl od funkce Microsoft Active Accessibility se mechanismus událostí v automatizaci uživatelského rozhraní 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 na konkrétní části stromu, nejen na konkrétní události. Poskytovatelé můžou také doladit události vyvolávání tím, že sledují, které 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 načítají automaticky, pokud se při přihlášení klienta k odběru události zadal požadavek na mezipaměť.
Následující tabulka ukazuje korespondenci konstant událostí microsoft Active Accessibility a ID událostí automatizace uživatelského rozhraní.
Přístup k aktivním vlastnostem a objektům přístupnosti z automatizace uživatelského rozhraní
Klíčovou funkcí automatizace uživatelského rozhraní, která není k dispozici ve službě Microsoft Active Accessibility, je schopnost načíst více vlastností pomocí jedné operace křížového procesu.
Stávající klienti Microsoft Active Accessibility mohou tuto schopnost využít pomocí rozhraní IUIAutomationLegacyIAccessiblePattern. Toto rozhraní představuje vzor ovládacích prvků , který zveřejňuje vlastnosti a metody microsoft Active Accessibility u prvků uživatelského rozhraní. Při načítání prvků může aplikace požadovat, aby tento vzor ovládacího prvku a jeho vlastnosti byly uloženy do mezipaměti.
IUIAutomationLegacyIAccessiblePattern také umožňuje klientům získat vlastnosti přístupnosti služby Microsoft Active z prvků, které nemají nativní podporu pro IAccessible.
Změny vlastností IUIAutomationLegacyIAccessiblePattern nevyvolají události automatizace uživatelského rozhraní.
Související témata
-
přidání funkce automatizace uživatelského rozhraní na servery s aktivním usnadněním
-
Přehled typů ovládacích prvků automatizace uživatelského rozhraní