Automatyzacja interfejsu użytkownika i aktywne ułatwienia dostępu
Microsoft Active Accessibility to starszy interfejs API wprowadzony w systemie Windows 95 i został zaprojektowany tak, aby aplikacje systemu Windows były dostępne. Automatyzacja interfejsu użytkownika firmy Microsoft to nowy model ułatwień dostępu dla systemu Windows i ma na celu zaspokojenie potrzeb produktów technologii pomocniczych i zautomatyzowanych narzędzi do testowania. Automatyzacja interfejsu użytkownika oferuje wiele ulepszeń w zakresie ułatwień dostępu Aktywnego firmy Microsoft. W tym temacie opisano różnice między dwiema technologiami.
Ten temat zawiera następujące sekcje.
- języków programowania
- serwerów i klientów
- Elementy interfejsu użytkownika
- widoki drzewa i nawigacji
- role i typy kontrolek
- stany i właściwości
- zdarzeń
- uzyskiwanie dostępu do aktywnych właściwości i obiektów ułatwień dostępu z automatyzacji interfejsu użytkownika
- Tematy pokrewne
Języki programowania
Microsoft Active Accessibility jest oparta na modelu obiektów składników (COM) z obsługą podwójnych interfejsów, a zatem programowalne w językach C/C++ i skryptów.
Po wprowadzeniu automatyzacji interfejsu użytkownika interfejs API klienta był ograniczony do kodu zarządzanego, podczas gdy interfejs API dostawcy obejmował zarówno implementacje zarządzane, jak i niezarządzane. W systemie Windows 7 wprowadzono nowy interfejs API klienta oparty na modelu COM, aby ułatwić programowanie aplikacji klienckich automatyzacji interfejsu użytkownika w języku C/C++.
Serwery i klienci
W usłudze Microsoft Active Accessibility serwery i klienci komunikują się bezpośrednio, głównie za pośrednictwem implementacji serwera interfejsu IAccessible.
W usłudze Automatyzacja interfejsu użytkownika podstawowa usługa leży między serwerem (dostawcą) a klientem. Podstawowa usługa wykonuje wywołania interfejsów implementowanych przez dostawców i udostępnia dodatkowe usługi, takie jak generowanie unikatowych identyfikatorów czasu wykonywania dla elementów interfejsu użytkownika. Aplikacje klienckie uzyskują dostęp do tej podstawowej usługi, tworząc obiekt CUIAutomation. Ten obiekt obsługuje zestaw interfejsów klienta, które są oddzielone od interfejsów dostawcy. Aby uzyskać więcej informacji, zobacz Tworzenie obiektu CUIAutomation.
Dostawcy automatyzacji interfejsu użytkownika mogą udostępniać informacje klientom usługi Microsoft Active Accessibility, a serwery microsoft Active Accessibility mogą udostępniać informacje aplikacjom klienckim automatyzacji interfejsu użytkownika. Jednak ze względu na to, że usługa Microsoft Active Accessibility nie uwidacznia tak dużej ilości informacji, jak automatyzacja interfejsu użytkownika, te dwa modele nie są w pełni zgodne.
Elementy interfejsu użytkownika
Microsoft Active Accessibility przedstawia element interfejsu użytkownika jako interfejs IAccessible sparowany z identyfikatorem podrzędnym. Trudno jest porównać dwa wskaźniki IAccessible w celu określenia, czy odwołują się one do tego samego elementu.
W usłudze Automatyzacja interfejsu użytkownika każdy element jest reprezentowany jako obiekt, który uwidacznia interfejs IUIAutomationElement dla klientów. Elementy można porównać przy użyciu identyfikatorów czasu wykonywania, które są pobierane przy użyciu IUIAutomationElement::GetRuntimeId.
Widoki drzewa i nawigacja
Elementy interfejsu użytkownika na ekranie można postrzegać jako strukturę drzewa z pulpitem jako element główny, okna aplikacji jako bezpośrednie elementy podrzędne i elementy w aplikacjach jako dalsze elementy podrzędne.
W usłudze Microsoft Active Accessibility wiele elementów interfejsu użytkownika, które są nieistotne dla użytkowników końcowych, są widoczne w strukturze drzewa. Aplikacje klienckie muszą zbadać wszystkie elementy w drzewie, aby określić, które elementy mają znaczenie.
Aplikacje klienckie automatyzacji interfejsu użytkownika widzą interfejs użytkownika za pośrednictwem filtrowanego widoku. Widok zawiera tylko elementy, które dają użytkownikowi informacje lub z którymi użytkownik może wchodzić w interakcję. Wstępnie zdefiniowane widoki zawierające tylko elementy sterujące i dostępne są tylko elementy zawartości, a aplikacje klienckie mogą definiować widoki niestandardowe. Automatyzacja interfejsu użytkownika ułatwia opisywanie interfejsu użytkownika i ułatwia interakcję użytkownika z aplikacjami.
W obszarze Microsoft Active Accessibility nawigacja między elementami jest przestrzenna, na przykład przejście do elementu znajdującego się po lewej stronie ekranu, logiczne, na przykład przejście do następnego elementu menu lub następnego elementu w kolejności tabulatora w oknie dialogowym lub hierarchiczne, na przykład przejście do pierwszego elementu podrzędnego w kontenerze lub z elementu podrzędnego do elementu nadrzędnego. Hierarchiczna nawigacja jest skomplikowana przez fakt, że elementy podrzędne nie zawsze są obiektami, które implementują IAccessible.
W automatyzacji interfejsu użytkownika wszystkie elementy interfejsu użytkownika są obiektami COM, które uwidaczniają interfejs IUIAutomationElement i obsługują te same podstawowe funkcje. Z punktu widzenia dostawcy obiekty COM implementują interfejs dziedziczony z IRawElementProviderSimple. Nawigacja jest głównie hierarchiczna; to znaczy od rodziców do dzieci, a od jednego rodzeństwa do następnego. Jednak nawigacja między elementami równorzędnymi ma element logiczny, ponieważ może być obserwowana kolejność tabulacji. Klient może przechodzić z dowolnego punktu początkowego przy użyciu dowolnego filtrowanego widoku drzewa przy użyciu IUIAutomationTreeWalker. Klient może również przejść do określonych elementów podrzędnych lub elementów potomnych przy użyciu IUIAutomationElement::FindFirst i IUIAutomationElement::FindAll. Na przykład można łatwo pobrać wszystkie elementy w oknie dialogowym obsługującym określony wzorzec kontrolki.
Nawigacja w automatyzacji interfejsu użytkownika jest bardziej spójna niż w usłudze Microsoft Active Accessibility. Niektóre elementy, takie jak listy rozwijane i okna podręczne, są wyświetlane dwa razy w drzewie Microsoft Active Accessibility i nawigacja z tych elementów mogą mieć nieoczekiwane wyniki. Trudno jest prawidłowo zaimplementować funkcję Microsoft Active Accessibility dla kontrolki paska pomocniczego. Automatyzacja interfejsu użytkownika umożliwia reparenting i repozycję, dzięki czemu element można umieścić w dowolnym miejscu w drzewie, pomimo hierarchii nałożonej przez własność okien.
Role i typy kontrolek
Usługa Microsoft Active Accessibility używa właściwości accRole (IAccessible::get_accRole) w celu pobrania opisu roli elementu w interfejsie użytkownika, takiej jak ROLE_SYSTEM_SLIDER lub ROLE_SYSTEM_MENUITEM. Rola elementu jest główną wskazówką dla jego dostępnych funkcji. Interakcja z kontrolką jest osiągana przy użyciu stałych metod, takich jak IAccessible::accSelect i IAccessible::accDoDefaultAction. Interakcja między aplikacją kliencka a interfejsem użytkownika jest ograniczona do tego, co można zrobić za pośrednictwem IAccessible.
Natomiast automatyzacja interfejsu użytkownika rozdziela typ kontrolki elementu, który jest opisany przez właściwość IUIAutomationElement::CurrentControlType (lub IUIAutomationElement::CachedControlType) z oczekiwanej funkcjonalności. Funkcjonalność jest określana przez wzorce sterowania obsługiwane przez dostawcę za pośrednictwem implementacji wyspecjalizowanych interfejsów. Wzorce sterowania można połączyć w celu opisania pełnego zestawu funkcji obsługiwanych przez określony element interfejsu użytkownika. Niektórzy dostawcy muszą obsługiwać określony wzorzec kontroli. Na przykład dostawca pola wyboru musi obsługiwać wzorzec sterowania przełączania. Inni dostawcy są zobowiązani do obsługi co najmniej jednego zestawu wzorców sterowania. Na przykład przycisk musi obsługiwać przełącznik lub wzorzec kontrolki Invoke. Nadal inni nie obsługują żadnych wzorców kontroli. Na przykład okienko, którego nie można przenosić, zmieniać rozmiaru ani zadokować, nie ma wzorców sterujących.
Automatyzacja interfejsu użytkownika obsługuje kontrolki niestandardowe, które są identyfikowane przez stałą UIA_CustomControlTypeId i mogą być opisane przez właściwość IUIAutomationElement::CurrentLocalizedControlType (lub IUIAutomationElement::CachedLocalizedControlType).
W poniższej tabeli przedstawiono mapowanie ról obiektów Active Accessibility do typów kontrolek automatyzacji interfejsu użytkownika.
Stany i właściwości
Elementy ułatwień dostępu microsoft active obsługują wspólny zestaw właściwości. Niektóre właściwości, takie jak accState, muszą opisywać różne warunki w zależności od roli elementu. Serwery muszą implementować wszystkie metody IAccessible, które zwracają właściwość, nawet te właściwości, które nie są istotne dla elementu.
Automatyzacja interfejsu użytkownika definiuje dodatkowe właściwości, z których niektóre odpowiadają stanom w usłudze Microsoft Active Accessibility. Niektóre właściwości są wspólne dla wszystkich elementów, ale inne właściwości są specyficzne dla typów kontrolek i wzorców kontrolek. Dostawca automatyzacji interfejsu użytkownika nie musi implementować nieistotnych właściwości, ale może zwrócić wartość null dla żadnych właściwości, które nie obsługuje. Podstawowa usługa automatyzacji interfejsu użytkownika może uzyskać niektóre właściwości od domyślnego dostawcy okien i są one połączone z właściwościami jawnie zaimplementowanymi przez dostawcę.
Oprócz obsługi wielu innych właściwości automatyzacja interfejsu użytkownika umożliwia lepszą wydajność, umożliwiając buforowanie właściwości.
W poniższej tabeli przedstawiono korespondencję między niektórymi właściwościami w dwóch modelach. Aby uzyskać opisy identyfikatorów właściwości automatyzacji interfejsu użytkownika, zobacz identyfikatory właściwości elementu automatyzacji.
Dostęp do właściwości Aktywne ułatwienia dostępu | Identyfikator właściwości automatyzacji interfejsu użytkownika | Uwagi |
---|---|---|
get_accKeyboardShortcut | UIA_AccessKeyPropertyId lub UIA_AcceleratorKeyPropertyId | UIA_AccessKeyPropertyId ma pierwszeństwo, jeśli oba są obecne. |
get_accName | UIA_NamePropertyId | |
get_accRole | UIA_ControlTypePropertyId | Zobacz poprzednią tabelę, aby uzyskać role mapowania na typy kontrolek. |
get_accValue | UIA_ValueValuePropertyId lub UIA_RangeValueValuePropertyId | Prawidłowe tylko dla typów kontrolek obsługujących IUIAutomationValuePattern lub IUIAutomationRangeValuePattern. Wartości zakresu są znormalizowane do 0–100, aby zachować spójność z zachowaniem aktywnego ułatwień dostępu firmy Microsoft. Wartości są reprezentowane jako ciągi. |
get_accHelp | UIA_HelpTextPropertyId | |
accLocation | UIA_BoundingRectanglePropertyId | |
get_accDescription | Nieobsługiwane. | Program accDescription nie miał jasnej specyfikacji w usłudze Microsoft Active Accessibility, co spowodowało umieszczenie na serwerach różnych informacji w tej właściwości. |
get_accHelpTopic | Nieobsługiwane. |
W poniższej tabeli przedstawiono identyfikatory właściwości automatyzacji interfejsu użytkownika, które odpowiadają stałem stanu obiektu microsoft Active Accessibility.
Aby uzyskać pełną listę identyfikatorów właściwości, zobacz Identyfikatory właściwości.
Zdarzenia
W przeciwieństwie do usługi Microsoft Active Accessibility, mechanizm zdarzeń w automatyzacji interfejsu użytkownika, nie opiera się na routingu zdarzeń systemu Windows, który jest ściśle powiązany z dojściami okien i nie wymaga, aby aplikacja kliencka mogła skonfigurować punkty zaczepienia. Subskrypcje zdarzeń mogą być dostosowane do konkretnych części drzewa, a nie tylko dla konkretnych zdarzeń. Dostawcy mogą również dostroić zdarzenia podnoszące, śledząc, które zdarzenia są nasłuchiwane.
Klientom łatwiej jest również pobrać elementy, które zgłaszają zdarzenia, ponieważ są one przekazywane bezpośrednio do wywołania zwrotnego zdarzeń. Właściwości elementu są pobierane automatycznie, jeśli żądanie pamięci podręcznej zostało dostarczone, gdy klient zasubskrybował zdarzenie.
W poniższej tabeli przedstawiono korespondencję stałych zdarzeń usługi Microsoft Active Accessibility i identyfikatorów zdarzeń automatyzacji interfejsu użytkownika.
Uzyskiwanie dostępu do aktywnych właściwości i obiektów ułatwień dostępu z automatyzacji interfejsu użytkownika
Kluczową funkcją automatyzacji interfejsu użytkownika, która nie jest dostępna w usłudze Microsoft Active Accessibility, jest możliwość pobierania wielu właściwości za pomocą jednej operacji między procesami.
Istniejący klienci microsoft Active Accessibility mogą korzystać z tej możliwości przy użyciu interfejsu IUIAutomationLegacyIAccessiblePattern. Ten interfejs reprezentuje wzorzec sterowania , który uwidacznia właściwości i metody ułatwień dostępu Microsoft Active w elementach interfejsu użytkownika. Podczas pobierania elementów aplikacja może zażądać buforowania tego wzorca kontrolki i jego właściwości.
IUIAutomationLegacyIAccessiblePattern umożliwia również klientom uzyskiwanie właściwości microsoft Active Accessibility z elementów, które nie obsługują natywnej IAccessible.
Zmiany właściwości IUIAutomationLegacyIAccessiblePattern nie zgłaszają zdarzeń automatyzacji interfejsu użytkownika.