WM_GETOBJECT message

Envoyé par Microsoft Active Accessibility et Microsoft UI Automation pour obtenir des informations sur un objet accessible contenu dans une application serveur.

Les applications n’envoient jamais ce message directement. Microsoft Active Accessibility envoie ce message en réponse aux appels à AccessibleObjectFromPoint, AccessibleObjectFromEvent ou AccessibleObjectFromWindow. Toutefois, les applications serveur gèrent ce message. UI Automation envoie ce message en réponse aux appels à IUIAutomation::ElementFromHandle, ElementFromPoint et GetFocusedElement, et lors de la gestion des événements pour lesquels un client s’est inscrit.

dwFlags = (WPARAM)(DWORD) wParam;
dwObjId = (LPARAM)(DWORD) lParam;

Paramètres

dwFlags

Fournit des informations supplémentaires sur le message et est utilisé uniquement par le système. Les serveurs passent dwFlags comme paramètre wParam dans l’appel à LresultFromObject lors de la gestion du message.

dwObjId

Identificateur d’objet. Cette valeur est l’une des constantes d’identificateur d’objet ou un identificateur d’objet personnalisé. Une application serveur doit case activée cette valeur pour identifier le type d’informations demandées. Avant de comparer cette valeur aux valeurs OBJID_, le serveur doit la convertir en DWORD ; sinon, sur Windows 64 bits, l’extension de signe de lParam peut interférer avec la comparaison.

  • Si dwObjId est l’une des valeurs OBJID_ telles que OBJID_CLIENT, la demande concerne un objet Microsoft Active Accessibility qui implémente IAccessible.
  • Si dwObjId est égal à UiaRootObjectId, la demande concerne un fournisseur de UI Automation. Si le serveur implémente UI Automation, il doit retourner un fournisseur à l’aide de la fonction UiaReturnRawElementProvider.
  • Si dwObjId est OBJID_NATIVEOM, la demande concerne le modèle objet sous-jacent du contrôle. Si le contrôle prend en charge cette requête, il doit retourner une interface COM appropriée en appelant la fonction LresultFromObject .
  • Si dwObjId est OBJID_QUERYCLASSNAMEIDX, la demande est que le contrôle s’identifie comme un contrôle Windows standard ou un contrôle commun implémenté par la bibliothèque de contrôles commune (ComCtrl.dll).

Valeur retournée

Si la fenêtre ou le contrôle n’a pas besoin de répondre à ce message, il doit passer le message à la fonction DefWindowProc ; sinon, la fenêtre ou le contrôle doit retourner une valeur qui correspond à la requête spécifiée par dwObjId :

  • Si la fenêtre ou le contrôle implémente UI Automation, la fenêtre ou le contrôle doit retourner la valeur obtenue par un appel à la fonction UiaReturnRawElementProvider.
  • Si dwObjId est OBJID_NATIVEOM et que la fenêtre expose un modèle objet natif, les fenêtres doivent retourner la valeur obtenue par un appel à la fonction LresultFromObject .
  • Si dwObjId est OBJID_CLIENT et que la fenêtre implémente IAccessible, la fenêtre doit retourner la valeur obtenue par un appel à la fonction LresultFromObject .

Notes

Lorsqu’un client appelle AccessibleObjectFromWindow ou l’une des autres fonctions AccessibleObjectFromX qui récupèrent une interface vers un objet, Microsoft Active Accessibility envoie le message WM_GETOBJECT à la procédure de fenêtre appropriée au sein de l’application serveur appropriée. Lors du traitement des WM_GETOBJECT, les applications serveur appellent LresultFromObject et utilisent la valeur de retour de cette fonction comme valeur de retour pour le message. Microsoft Active Accessibility, conjointement avec la bibliothèque COM, effectue le marshaling approprié et transmet le pointeur d’interface du serveur au client.

Les serveurs ne répondent pas aux WM_GETOBJECT avant l’initialisation complète de l’objet ou après sa fermeture. Lorsqu’une application crée une fenêtre, le système envoie EVENT_OBJECT_CREATE pour notifier les clients avant d’envoyer le message WM_CREATE à la procédure de fenêtre de l’application. Étant donné que de nombreuses applications utilisent WM_CREATE pour démarrer leur processus d’initialisation, les serveurs ne répondent pas au message WM_GETOBJECT tant que le traitement du message WM_CREATE n’a pas terminé.

Un serveur utilise WM_GETOBJECT pour effectuer les tâches suivantes :

Pour les clients, cela signifie qu’ils peuvent recevoir des pointeurs d’interface distincts pour le même élément d’interface utilisateur, en fonction de l’action du serveur. Pour déterminer si deux pointeurs d’interface pointent vers le même élément d’interface utilisateur, les clients comparent les propriétés IAccessible de l’objet. La comparaison de pointeurs ne fonctionne pas.

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge
Windows Server 2003 [applications de bureau uniquement]
Composant redistribuable
Active Accessibility 1.3 RDK sur Windows NT 4.0 avec SP6 et versions ultérieures et Windows 95
En-tête
Winuser.h (inclure Windows.h)

Voir aussi

Comment gérer les WM_GETOBJECT

Fonctionnement de WM_GETOBJECT

LresultFromObject