Proxys IAccessibles
Les proxys IAccessible fournissent des informations d’accessibilité par défaut pour les éléments d’interface utilisateur standard : contrôles UTILISATEUR, menus UTILISATEUR et contrôles communs de COMCTL et COMCTL32. Cette prise en charge par défaut est exposée par le biais d’objets IAccessible créés par Oleacc.dll et offre la prise en charge de Microsoft Active Accessibility sans travail de développement de serveur supplémentaire. Le serveur peut ensuite utiliser l’API d’annotation dynamique pour modifier une grande partie des informations exposées par Oleacc.dll, mais il n’a pas un contrôle total.
Création d’un proxy
Pour déterminer si un élément d’interface utilisateur prend en charge l’interface IAccessible en mode natif, Oleacc.dll lui envoie un message WM_GETOBJECT . Une valeur de retour différente de zéro signifie que l’élément prend en charge Microsoft Active Accessibility en mode natif et fournit sa propre prise en charge IAccessible . Toutefois, si la valeur de retour est égale à zéro, Oleacc.dll fournit un objet proxy pour l’élément d’interface utilisateur et tente de retourner des informations significatives en son nom. Pour plus d’informations sur WM_GETOBJECT, consultez Fonctionnement WM_GETOBJECT.
Informations exposées
Oleacc.dll utilise le nom de classe Windows de l’élément d’interface utilisateur pour déterminer quelles informations doivent être exposées pour chacune de ses propriétés IAccessible et comment collecter ces informations. Par exemple, Oleacc.dll appelle la fonction GetWindowText pour récupérer la propriété Name d’un bouton push standard, mais appelle cette même fonction pour récupérer la propriété Value d’un contrôle d’édition standard. En effet, Oleacc.dll mappe chaque méthode IAccessible à un message ou un appel de fonction Microsoft Win32 ou spécifique au contrôle. En utilisant cette casse spéciale basée sur le nom de classe, elle peut retourner des informations significatives via des proxys IAccessible sans prise en charge de Microsoft Active Accessibility sur le serveur.
Les applications créées avec des éléments d’interface utilisateur standard bénéficient généralement d’une prise en charge complète de Microsoft Active Accessibility sans travail de développement supplémentaire. Les exceptions à cette règle sont les contrôles qui ont été sous-classés, qui ne stockent pas leurs propres chaînes (absence du style HASSTRINGS ) ou qui sont dessinés par le propriétaire. Dans ce cas, Oleacc.dll ne peut pas collecter les informations dont il a besoin, car les informations sont stockées en dehors du contrôle. Toutefois, dans la plupart de ces scénarios, les solutions de contournement établies ou l’utilisation de l’annotation dynamique permettent au serveur de coopérer avec les proxys fournis par Oleacc.dll.
Objets proxy génériques
Si Oleacc.dll ne reconnaît pas le nom de classe de l’élément d’interface utilisateur, elle crée un proxy générique qui expose autant d’informations que possible. Cela inclut tout au plus le rectangle englobant, l’objet parent, le nom (à partir de WM_GETTEXT) de l’objet et tous les enfants de la hiérarchie de fenêtre.