Implementeringsriktlinjer för IAccessibleEx
Microsoft UI Automation-kärnan kan hämta alla Microsoft Active Accessibility-egenskaper för alla tillgängliga objekt som exponeras av en server via gränssnittet IAccessible. När du implementerar IAccessibleExmåste du endast exponera de aspekter av användargränssnittsfunktioner som annars inte kan exponeras via befintliga Microsoft Active Accessibility-egenskaper. Det här avsnittet identifierar egenskaper och kontrollmönster för användargränssnittsautomatisering som representerar användargränssnittsfunktioner som inte har någon motsvarighet i Microsoft Active Accessibility– de är de egenskaper och kontrollmönster som du kan exponera i en IAccessibleEx- implementering.
Det här avsnittet innehåller följande avsnitt:
Egenskaper
Följande UI Automation-egenskaper överlappar inte Microsoft Active Accessibility-funktionerna. De kan användas i en IAccessibleEx implementering:
- AriaProperties
- AriaRole
- AutomationId
- ClassName
- ClickablePoint
- ControllerFor
- Kultur
- DescribedBy
- FlowsTo
- FrameworkId
- IsContentElement
- IsControlElement
- IsDataValidForForm
- IsRequiredForForm
- ItemStatus
- ItemType
- LabeledBy
- LocalizedControlType
- Orientering
Även om egenskaperna AcceleratorKey och AccessKey UI Automation överlappar egenskapen accKeyboardShortcut Microsoft Active Accessibility kan du fortfarande använda dem i en IAccessibleEx implementering för kontroller som har både en åtkomstnyckel och en accelerator. På samma sätt överlappar egenskapen ControlType UI Automation egenskapen Microsoft Active Accessibility accRole, men du kan fortfarande använda den i en IAccessibleEx implementering för att definiera en mer specifik roll för en kontroll.
Eftersom följande egenskaper för UI Automation-element redan omfattas av Microsoft Active Accessibility-egenskaper behöver du inte använda dem i en IAccessibleEx- implementering.
UI Automation-egenskap | Microsoft Active Accessibility Equivalent |
---|---|
BoundingRectangle | accLocation |
HasKeyboardFocus | accState, STATE_SYSTEM_FOCUSED |
IsEnabled | accState, STATE_SYSTEM_UNAVAILABLE |
IsKeyboardFocusable | accState, STATE_SYSTEM_FOCUSABLE |
IsPassword | accState, STATE_SYSTEM_PROTECTED |
HelpText | accHelp |
Namn | accName |
NativeWindowHandle | WindowFromAccessibleObject |
IsOffscreen | accState, STATE_SYSTEM_INVISIBLE/STATE_SYSTEM_OFFSCREEN |
ProcessId | Tillhandahålls av UI Automation Core |
För alla UI Automation-egenskaper som inte stöds bör din implementering av parametern IRawElementProviderSimple::GetPropertyValue ange parametern pRetVal till VT_EMPTY och returnera S_OK. Om du returnerar UIA_E_NOTSUPPORTED kan det leda till att MSAA-till-UIA-proxyn tar bort standardmappningen för motsvarande egenskap.
Kontrollmönster
Följande UI Automation-kontrollmönster överlappar inte Microsoft Active Accessibility-funktionerna. De kan användas i en IAccessibleEx implementering:
- Docka
- ExpandCollapse
- Gitter
- GridItem
- MultipleView
- RangeValue
- Rulla
- ScrollItem
- SynchronizedInput
- Bord
- TableItem
- Transformera
För kontrollmönstren RangeValue och Transformera överlappar vissa metoder mönstret för UI Automation-kontroll och Microsoft Active Accessibility-metoder. I dessa fall måste båda implementeras. Till exempel måste både Microsoft Active Accessibilitys IAccessible::get_accValue och IAccessible::p ut_accValue metoder implementeras, liksom UI AutomationIRangeValueProvider::Value och IRangeValueProvider::SetValue metoder. Internt kan en implementering dela kod för dessa. Det här kravet för att implementera båda uppsättningarna undviker en partiell implementering av ett mönstergränssnitt samtidigt som IAccessible- gränssnitt kan användas av befintliga Microsoft Active Accessibility-klienter.
Följande UI Automation-kontrollmönster krävs inte när kontrollen har en av rollerna som beskrivs nedan. annars bör de uttryckligen stödjas om det är relevant.
Kontrollmönster för användargränssnittsautomatisering | Microsoft Active Accessibility Role |
---|---|
InvokePattern | ROLE_SYSTEM_PUSHBUTTON, ROLE_SYSTEM_MENUITEM, ROLE_SYSTEM_BUTTONDROPDOWN, ROLE_SYSTEM_SPLITBUTTONoch andra roller där värdet för egenskapen accDefaultAction inte NULL-. |
SelectionItemPattern | ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_RADIOBUTTON |
SelectionPattern | ROLE_SYSTEM_LIST |
VäxlaMönster | ROLE_SYSTEM_CHECKBUTTON |
ValuePattern | ROLE_SYSTEM_TEXT (när den inte är skrivskyddad) ROLE_SYSTEM_PROGRESSBAR, ROLE_SYSTEM_COMBOBOXoch andra roller när värdet för egenskapen accValue inte NULL-. |
WindowPattern | Stöds automatiskt på den översta nivån i Microsoft Win32 HWNDs. |
WinEvents för UI Automation Property Changed Events
Förutom de händelser som definierats för IAccessibledefinieras även följande händelseidentifierare och kan användas med en IAccessibleEx implementering som egenskapsändringshändelser för motsvarande UI Automation-egenskaper. Dessa använder samma mekanism som de händelser som definierats för IAccessible. Mer information finns i WinEvents.
WinEvent ID för IAccessibleEx-implementeringar | Relaterat WinEvent-ID från Microsoft Active Accessibility |
---|---|
UIA_AriaPropertiesPropertyId | Ingen |
UIA_AriaRolePropertyId | Ingen |
UIA_ControllerForPropertyId | Ingen |
UIA_DescribedByPropertyId | Ingen |
UIA_ExpandCollapseExpandCollapseStatePropertyId | EVENT_OBJECT_STATECHANGE |
UIA_FlowsToPropertyId | Ingen |
UIA_InputDiscardedEventId | Ingen |
UIA_InputReachedOtherElementEventId | Ingen |
UIA_InputReachedTargetEventId | Ingen |
UIA_IsDataValidForFormPropertyId | Ingen |
UIA_IsEnabledPropertyId | EVENT_OBJECT_STATECHANGE |
UIA_ItemStatusPropertyId | Ingen |
UIA_MultipleViewCurrentViewPropertyId | Ingen |
UIA_ScrollHorizontallyScrollablePropertyId | Ingen |
UIA_ScrollHorizontalScrollPercentPropertyId | EVENT_OBJECT_CONTENTSCROLLED |
UIA_ScrollHorizontalViewSizePropertyId | Ingen |
UIA_ScrollVerticallyScrollablePropertyId | Ingen |
UIA_ScrollVerticalScrollPercentPropertyId | EVENT_OBJECT_CONTENTSCROLLED |
UIA_ScrollVerticalViewSizePropertyId | Ingen |
UIA_ToggleToggleStatePropertyId | EVENT_OBJECT_STATECHANGE |
För händelser ovan som har ett EVENT_OBJECT_ värde som anges efter dem, och IAccessibleEx implementering bör utlösa den här händelsen utöver den ändrade händelsen i listan. Detta gör att befintlig IAccessibleEx klientkod kan fortsätta att fungera, samtidigt som mer detaljerad händelseinformation förmedlas till intresserade klienter.
Relaterade ämnen