Partager via


Instructions d’implémentation iAccessibleEx

Microsoft UI Automation core peut récupérer toutes les propriétés Microsoft Active Accessibility pour tout objet accessible exposé par un serveur via l’interface IAccessible. Lorsque vous implémentez IAccessibleEx, vous devez exposer uniquement les aspects des fonctionnalités d’interface utilisateur qui ne peuvent pas être exposés par le biais des propriétés Microsoft Active Accessibility existantes. Cette rubrique identifie les propriétés UI Automation et les modèles de contrôle qui représentent des fonctionnalités d’interface utilisateur qui n’ont pas d’équivalent dans Microsoft Active Accessibility. Il s’agit des propriétés et des modèles de contrôle que vous pouvez exposer dans une implémentation IAccessibleEx.

Cette rubrique contient les sections suivantes :

Propriétés

Les propriétés de UI Automation suivantes ne chevauchent pas la fonctionnalité Microsoft Active Accessibility. Ils peuvent être utilisés dans une implémentation IAccessibleEx :

  • AriaProperties
  • AriaRole
  • AutomationId
  • ClassName
  • ClickablePoint
  • ControllerFor
  • Culture
  • Description Par
  • FlowTo
  • FrameworkId
  • IsContentElement
  • IsControlElement
  • IsDataValidForForm
  • IsRequiredForForm
  • ItemStatus
  • itemType
  • LabeledBy
  • LocalizedControlType
  • Orientation

Bien que les propriétés AcceleratorKey et AccessKey UI Automation chevauchent la propriété accKeyboardShortcut Microsoft Active Accessibility, vous pouvez toujours les utiliser dans une implémentation IAccessibleEx pour les contrôles qui ont à la fois une clé d’accès et un accélérateur. De même, la propriété ControlType UI Automation chevauche la propriété AccRole Microsoft Active Accessibility, mais vous pouvez toujours l’utiliser dans une implémentation IAccessibleEx pour définir un rôle plus spécifique pour un contrôle.

Étant donné que les propriétés d’élément UI Automation suivantes sont déjà couvertes par les propriétés Microsoft Active Accessibility, il n’est pas nécessaire de les utiliser dans une implémentation IAccessibleEx.

Propriété UI Automation 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
Nom accName
NativeWindowHandle WindowFromAccessibleObject
IsOffscreen accState, STATE_SYSTEM_INVISIBLE/STATE_SYSTEM_OFFSCREEN
ProcessId Fourni par UI Automation core

 

Pour toute propriété de UI Automation non prise en charge, votre implémentation de la méthode IRawElementProviderSimple::GetPropertyValue doit définir le paramètre pRetVal sur VT_EMPTY et retourner S_OK. Le retour de UIA_E_NOTSUPPORTED peut entraîner la suppression du mappage par défaut de la propriété correspondante par le proxy MSAA vers UIA.

Modèles de contrôle

Les modèles de contrôle UI Automation suivants ne chevauchent pas la fonctionnalité Microsoft Active Accessibility. Ils peuvent être utilisés dans une implémentation IAccessibleEx :

  • Ancrer
  • ExpandCollapse
  • Grille
  • GridItem
  • MultipleView
  • RangeValue
  • Scroll
  • ScrollItem
  • SynchronizedInput
  • Table de charge de travail
  • TableItem
  • Transformation

Pour les modèles de contrôle RangeValue et Transform, certaines méthodes se chevauchent entre le modèle de contrôle UI Automation et les méthodes Microsoft Active Accessibility. Dans ce cas, les deux doivent être implémentés. Par exemple, les méthodes IAccessible::get_accValue et IAccessible::p ut_accValue de Microsoft Active Accessibility doivent toutes deux être implémentées, de même que les méthodes UI Automation IRangeValueProvider::Value et IRangeValueProvider::SetValue. En interne, une implémentation peut partager du code pour ceux-ci. Cette exigence d’implémenter les deux ensembles évite d’avoir une implémentation partielle d’une interface de modèle tout en conservant l’interface IAccessible utilisable par les clients Microsoft Active Accessibility existants.

Les modèles de contrôle UI Automation suivants ne sont pas obligatoires lorsque le contrôle a l’un des rôles décrits ci-dessous ; sinon, ils doivent être explicitement pris en charge le cas échéant.

modèle de contrôle UI Automation Rôle d’accessibilité active Microsoft
InvokePattern ROLE_SYSTEM_PUSHBUTTON, ROLE_SYSTEM_MENUITEM, ROLE_SYSTEM_BUTTONDROPDOWN, ROLE_SYSTEM_SPLITBUTTON et tout autre rôle où la valeur de la propriété accDefaultAction n’est pas NULL.
SelectionItemPattern ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_RADIOBUTTON
SelectionPattern ROLE_SYSTEM_LIST
TogglePattern ROLE_SYSTEM_CHECKBUTTON
ValuePattern ROLE_SYSTEM_TEXT (lorsqu’il n’est pas en lecture seule), ROLE_SYSTEM_PROGRESSBAR, ROLE_SYSTEM_COMBOBOX et tout autre rôle lorsque la valeur de la propriété accValue n’est pas NULL.
WindowPattern Prise en charge automatique sur les HWNDMicrosoft Win32 de niveau supérieur.

 

WinEvents for UI Automation Property Changed Events

Outre les événements définis pour IAccessible, les identificateurs d’événement suivants sont également définis et peuvent être utilisés avec une implémentation IAccessibleEx en tant qu’événements de modification de propriété pour les propriétés UI Automation correspondantes. Ceux-ci utilisent le même mécanisme que les événements définis pour IAccessible. Pour plus d’informations, consultez WinEvents.

ID WinEvent pour les implémentations IAccessibleEx ID WinEvent associé de Microsoft Active Accessibility
UIA_AriaPropertiesPropertyId Aucune
UIA_AriaRolePropertyId Aucune
UIA_ControllerForPropertyId Aucune
UIA_DescribedByPropertyId Aucune
UIA_ExpandCollapseExpandCollapseStatePropertyId EVENT_OBJECT_STATECHANGE
UIA_FlowsToPropertyId None
UIA_InputDiscardedEventId Aucune
UIA_InputReachedOtherElementEventId Aucune
UIA_InputReachedTargetEventId Aucune
UIA_IsDataValidForFormPropertyId Aucune
UIA_IsEnabledPropertyId EVENT_OBJECT_STATECHANGE
UIA_ItemStatusPropertyId None
UIA_MultipleViewCurrentViewPropertyId Aucune
UIA_ScrollHorizontallyScrollablePropertyId Aucune
UIA_ScrollHorizontalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollHorizontalViewSizePropertyId None
UIA_ScrollVerticallyScrollablePropertyId Aucune
UIA_ScrollVerticalScrollPercentPropertyId EVENT_OBJECT_CONTENTSCROLLED
UIA_ScrollVerticalViewSizePropertyId None
UIA_ToggleToggleStatePropertyId EVENT_OBJECT_STATECHANGE

 

Pour les événements ci-dessus qui ont une valeur EVENT_OBJECT_ répertoriée après eux, et l’implémentation IAccessibleEx doit déclencher cet événement en plus de l’événement modifié répertorié. Cela permet au code client IAccessibleEx existant de continuer à fonctionner, tout en transmettant des informations plus précises sur les événements aux clients intéressés.

WinEvents

The IAccessibleEx Interface