Gestion du message WM de _ GETOBJECT
Microsoft Active Accessibility et Microsoft UI Automation envoient le message WM _ GETOBJECT à une application serveur ou fournisseur pour extraire des informations sur un objet accessible pris en charge par le serveur ou le fournisseur. Les clients n’envoient jamais de WM _ GETOBJECT directement. Au lieu de cela, Microsoft Active Accessibility envoie ce message lorsqu’un client appelle les fonctions AccessibleObjectFromPoint, AccessibleObjectFromEventet AccessibleObjectFromWindow . UI Automation envoie WM _ GETOBJECT lorsqu’un client appelle IUIAutomation :: ElementFromHandle, ElementFromPointet GetFocusedElement, et lors de la gestion des événements pour lesquels le client s’est inscrit.
Microsoft Active Accessibility ou UI Automation spécifie le type d’objet pour lequel il a besoin d’informations en passant une valeur appelée identificateur d’objet avec le message WM _ GETOBJECT . Lorsqu’il reçoit le message, le serveur ou le fournisseur examine l’identificateur d’objet pour déterminer comment répondre au message. La réponse varie selon que l’application réceptrice implémente Microsoft Active Accessibility (un serveur), UI Automation (fournisseur), ou aucun des autres, pour l’objet spécifié.
- Si l’application réceptrice est un serveur Microsoft Active Accessibility et que le message WM _ GETOBJECT comprend un identificateur d’objet du _ client objid, le serveur doit retourner la valeur obtenue en passant l’interface IAccessible de l’objet à la fonction LresultFromObject .
- Si l’application réceptrice est fournisseur d’Automation aUI et que l’identificateur d’objet est UiaRootObjectId, le fournisseur doit retourner l’interface IRawElementProviderSimple de l’objet. Le fournisseur obtient l’interface en appelant la fonction UiaReturnRawElementProvider .
- Si l’application réceptrice n’implémente ni Microsoft Active Accessibility ni UI Automation, elle doit transmettre le message WM _ à la fonction DefWindowProc . Le passage du message permet à l’infrastructure d’accessibilité de déterminer si un proxy est disponible pour l’objet spécifié.
- Si l’identificateur d’objet n’est ni objID _ client ni UiaRootObjectId, l’application de réception doit transmettre le message WM _ de la fonction DefWindowProc . Le passage du message permet à l’infrastructure d’accessibilité d’utiliser les fournisseurs par défaut pour les éléments d’interface utilisateur standard.
Microsoft Active Accessibility et UI Automation peuvent transmettre des identificateurs d’objet personnalisés dans _ un message WM pour récupérer des valeurs ou des objets définis par l’application à partir d’un serveur ou d’un fournisseur. L’identificateur d’objet objID _ NATIVEOM ou objID _ QUERYCLASSNAMEIDX peut être utilisé pour récupérer une interface de modèle objet natif, ou pour demander un objet proxy spécifique qui est pris en charge par Oleacc.dll.
En gérant à la fois les identificateurs d’objet _ client objid et UiaRootObjectId , une implémentation de serveur Microsoft Active Accessibility peut coexister avec une implémentation de fournisseur UI Automation. étant donné que la plupart des contrôles de Windows standard et des contrôles communs implémentés par la bibliothèque de contrôles communs (ComCtl32.dll) n’implémentent pas Microsoft Active Accessibility ou UI Automation, ces contrôles ne gèrent généralement pas le message WM de _ GETOBJECT . Au lieu de cela, l’infrastructure Microsoft Active Accessibility ou UI Automation vérifie si un objet proxy est disponible pour un élément d’interface utilisateur particulier. Dans le cas contraire, il fournit l’objet proxy par défaut pour l’objet de fenêtre hôte.