Udostępnij za pośrednictwem


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ę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.

Aktywna rola ułatwień dostępu Typ kontrolki automatyzacji interfejsu użytkownika
ROLE_SYSTEM_PUSHBUTTON przycisk
ROLE_SYSTEM_CLIENT kalendarz
ROLE_SYSTEM_CHECKBUTTON CheckBox
ROLE_SYSTEM_COMBOBOX ComboBox
ROLE_SYSTEM_CLIENT Zobacz niestandardowe typy kontrolek.
ROLE_SYSTEM_LIST DataGrid
ROLE_SYSTEM_LISTITEM DataItem
ROLE_SYSTEM_DOCUMENT dokumentów
ROLE_SYSTEM_TEXT Edytowanie
ROLE_SYSTEM_GROUPING grupy
ROLE_SYSTEM_LIST nagłówka
ROLE_SYSTEM_COLUMNHEADER headerItem
ROLE_SYSTEM_LINK hiperłącza
ROLE_SYSTEM_GRAPHIC obrazu
ROLE_SYSTEM_LIST listy
ROLE_SYSTEM_LISTITEM listitem
ROLE_SYSTEM_MENUPOPUP menu
ROLE_SYSTEM_MENUBAR paska menu
ROLE_SYSTEM_MENUITEM MenuItem
ROLE_SYSTEM_PANE okienka
ROLE_SYSTEM_PROGRESSBAR ProgressBar
ROLE_SYSTEM_RADIOBUTTON RadioButton
ROLE_SYSTEM_SCROLLBAR pasek przewijania
ROLE_SYSTEM_SEPARATOR separatora
ROLE_SYSTEM_SLIDER suwaka
ROLE_SYSTEM_SPINBUTTON pokrętła
ROLE_SYSTEM_SPLITBUTTON SplitButton
ROLE_SYSTEM_STATUSBAR StatusBar
ROLE_SYSTEM_PAGETABLIST kart
ROLE_SYSTEM_PAGETAB TabItem
ROLE_SYSTEM_TABLE tabeli
ROLE_SYSTEM_STATICTEXT tekstu
ROLE_SYSTEM_INDICATOR thumb
ROLE_SYSTEM_TITLEBAR TitleBar
ROLE_SYSTEM_TOOLBAR ToolBar
ROLE_SYSTEM_TOOLTIP ToolTip
ROLE_SYSTEM_OUTLINE drzewa
ROLE_SYSTEM_OUTLINEITEM TreeItem
ROLE_SYSTEM_WINDOW okna

 

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.

Stan aktywnej ułatwień dostępu Właściwość automatyzacji interfejsu użytkownika Wyzwalacze zmiany stanu WinEvent?
STATE_SYSTEM_CHECKED UIA_ToggleToggleStatePropertyId pole wyboru. UIA_SelectionItemIsSelectedPropertyId przycisk radiowy. Y
STATE_SYSTEM_COLLAPSED UIA_ExpandCollapseExpandCollapseStatePropertyId (wartość = ExpandCollapseState_Collapsed). Y
STATE_SYSTEM_EXPANDED UIA_ExpandCollapseExpandCollapseStatePropertyId (wartość = ExpandCollapseState_Expanded lub ExpandCollapseState_PartiallyExpanded). Y
STATE_SYSTEM_FOCUSABLE UIA_IsKeyboardFocusablePropertyId. N
STATE_SYSTEM_FOCUSED UIA_HasKeyboardFocusPropertyId. N
STATE_SYSTEM_HASPOPUP UIA_ExpandCollapseExpandCollapseStatePropertyId dla elementów menu. N
STATE_SYSTEM_INVISIBLE UIA_IsOffscreenPropertyId (wartość = True i IUIAutomationElement::GetClickablePoint kończy się niepowodzeniem). N
STATE_SYSTEM_LINKED UIA_ControlTypePropertyId (wartość = UIA_HyperlinkControlTypeId). N
STATE_SYSTEM_MIXED UIA_ToggleToggleStatePropertyId (wartość = ToggleState_Indeterminate. N
STATE_SYSTEM_MOVEABLE UIA_TransformCanMovePropertyId. N
STATE_SYSTEM_MULTISELECTABLE UIA_SelectionCanSelectMultiplePropertyId. N
STATE_SYSTEM_OFFSCREEN UIA_IsOffscreenPropertyId. N
STATE_SYSTEM_PROTECTED UIA_IsPasswordPropertyId. N
STATE_SYSTEM_READONLY UIA_RangeValueIsReadOnlyPropertyId i UIA_ValueIsReadOnlyPropertyId. N
STATE_SYSTEM_SELECTABLE UIA_IsSelectionItemPatternAvailablePropertyId . N
STATE_SYSTEM_SELECTED UIA_SelectionItemIsSelectedPropertyId. N
STATE_SYSTEM_SIZEABLE UIA_TransformCanResizePropertyId. N
STATE_SYSTEM_UNAVAILABLE UIA_IsEnabledPropertyId. Y

 

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.

WinEvent Identyfikator zdarzenia automatyzacji interfejsu użytkownika
EVENT_OBJECT_ACCELERATORCHANGE UIA_AcceleratorKeyPropertyId zmiany właściwości.
EVENT_OBJECT_CONTENTSCROLLED UIA_ScrollVerticalScrollPercentPropertyId lub UIA_ScrollHorizontalScrollPercentPropertyId zmianę właściwości na skojarzonych paskach przewijania.
EVENT_OBJECT_CREATE UIA_StructureChangedEventId.
EVENT_OBJECT_DEFACTIONCHANGE Brak odpowiednika.
EVENT_OBJECT_DESCRIPTIONCHANGE Nie ma dokładnego odpowiednika; być może UIA_HelpTextPropertyId lub UIA_LocalizedControlTypePropertyId zmiany właściwości.
EVENT_OBJECT_DESTROY UIA_StructureChangedEventId.
EVENT_OBJECT_FOCUS UIA_AutomationFocusChangedEventId.
EVENT_OBJECT_HELPCHANGE UIA_HelpTextPropertyId zmiany.
EVENT_OBJECT_HIDE UIA_StructureChangedEventId.
EVENT_OBJECT_LOCATIONCHANGE UIA_BoundingRectanglePropertyId zmiany właściwości.
EVENT_OBJECT_NAMECHANGE UIA_NamePropertyId zmiany właściwości.
EVENT_OBJECT_PARENTCHANGE UIA_StructureChangedEventId.
EVENT_OBJECT_REORDER Nieuwzgędnianie używane w usłudze Microsoft Active Accessibility. W usłudze Automatyzacja interfejsu użytkownika nie zdefiniowano żadnego bezpośrednio odpowiadającego zdarzenia.
EVENT_OBJECT_SELECTION UIA_SelectionItem_ElementSelectedEventId.
EVENT_OBJECT_SELECTIONADD UIA_SelectionItem_ElementAddedToSelectionEventId.
EVENT_OBJECT_SELECTIONREMOVE UIA_SelectionItem_ElementRemovedFromSelectionEventId.
EVENT_OBJECT_SELECTIONWITHIN Brak odpowiednika.
EVENT_OBJECT_SHOW UIA_StructureChangedEventId.
EVENT_OBJECT_STATECHANGE Różne zdarzenia zmienione właściwości.
EVENT_OBJECT_VALUECHANGE UIA_RangeValueValuePropertyId i UIA_ValueValuePropertyId zmienione.
EVENT_SYSTEM_ALERT Brak odpowiednika.
EVENT_SYSTEM_CAPTUREEND Brak odpowiednika.
EVENT_SYSTEM_CAPTURESTART Brak odpowiednika.
EVENT_SYSTEM_CONTEXTHELPEND Brak odpowiednika.
EVENT_SYSTEM_CONTEXTHELPSTART Brak odpowiednika.
EVENT_SYSTEM_DIALOGEND UIA_Window_WindowClosedEventId.
EVENT_SYSTEM_DIALOGSTART UIA_Window_WindowOpenedEventId.
EVENT_SYSTEM_DRAGDROPEND Brak odpowiednika.
EVENT_SYSTEM_DRAGDROPSTART Brak odpowiednika.
EVENT_SYSTEM_FOREGROUND UIA_AutomationFocusChangedEventId.
EVENT_SYSTEM_MENUEND UIA_MenuModeEndEventId.
EVENT_SYSTEM_MENUPOPUPEND UIA_MenuClosedEventId.
EVENT_SYSTEM_MENUPOPUPSTART UIA_MenuOpenedEventId.
EVENT_SYSTEM_MENUSTART UIA_MenuModeStartEventId.
EVENT_SYSTEM_MINIMIZEEND UIA_WindowWindowVisualStatePropertyId zmiany właściwości.
EVENT_SYSTEM_MINIMIZESTART UIA_WindowWindowVisualStatePropertyId zmiany właściwości.
EVENT_SYSTEM_MOVESIZEEND UIA_BoundingRectanglePropertyId zmiany właściwości.
EVENT_SYSTEM_MOVESIZESTART UIA_BoundingRectanglePropertyId zmiany właściwości.
EVENT_SYSTEM_SCROLLINGEND UIA_ScrollVerticalScrollPercentPropertyId lub UIA_ScrollHorizontalScrollPercentPropertyId zmiany właściwości.
EVENT_SYSTEM_SCROLLINGSTART UIA_ScrollVerticalScrollPercentPropertyId lub UIA_ScrollHorizontalScrollPercentPropertyId zmiany właściwości.
EVENT_SYSTEM_SOUND Brak odpowiednika.
EVENT_SYSTEM_SWITCHEND Nie ma odpowiednika, ale zdarzenie UIA_AutomationFocusChangedEventId sygnalizuje, że nowa aplikacja otrzymała fokus.
EVENT_SYSTEM_SWITCHSTART Brak odpowiednika.
Brak odpowiednika. UIA_MultipleViewCurrentViewPropertyId zmiany właściwości.
Brak odpowiednika. UIA_ScrollHorizontallyScrollablePropertyId zmiany właściwości.
Brak odpowiednika. UIA_ScrollVerticallyScrollablePropertyId zmiany właściwości.
Brak odpowiednika. UIA_ScrollHorizontalScrollPercentPropertyId zmiany właściwości.
Brak odpowiednika. UIA_ScrollVerticalScrollPercentPropertyId zmiany właściwości.
Brak odpowiednika. UIA_ScrollHorizontalViewSizePropertyId zmiany właściwości.
Brak odpowiednika. UIA_ScrollVerticalViewSizePropertyId zmiany właściwości.
Brak odpowiednika. UIA_ToggleToggleStatePropertyId zmiany właściwości.
Brak odpowiednika. zmiana właściwości UIA_WindowWindowVisualStatePropertyId
Brak odpowiednika. UIA_AsyncContentLoadedEventId zdarzenie.
Brak odpowiednika. UIA_ToolTipOpenedEventId zdarzenie.

 

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.

dodawanie funkcji automatyzacji interfejsu użytkownika do aktywnych serwerów ułatwień dostępu

Omówienie drzewa automatyzacji interfejsu użytkownika

Właściwości automatyzacji interfejsu użytkownika — omówienie

typy kontrolek automatyzacji interfejsu użytkownika — omówienie

Omówienie zdarzeń automatyzacji interfejsu użytkownika

microsoft Active Accessibility