Compartir a través de


Control del mensaje de WM_GETOBJECT

Tanto la accesibilidad activa de Microsoft como Microsoft Automatización de la interfaz de usuario envían el mensaje de WM_GETOBJECT a un servidor o aplicación de proveedor para recuperar información sobre un objeto accesible compatible con el servidor o proveedor. Los clientes nunca envían WM_GETOBJECT directamente. En su lugar, La accesibilidad activa de Microsoft envía este mensaje cuando un cliente llama a las funciones AccessibleObjectFromPoint, AccessibleObjectFromEvent y AccessibleObjectFromWindow . Automatización de la interfaz de usuario envía WM_GETOBJECT cuando un cliente llama a IUIAutomation::ElementFromHandle, ElementFromPoint y GetFocusedElement, y al controlar eventos para los que el cliente se ha registrado.

Microsoft Active Accessibility o Automatización de la interfaz de usuario especifica el tipo de objeto para el que necesita información pasando un valor denominado identificador de objeto con el mensaje WM_GETOBJECT. Cuando recibe el mensaje, el servidor o el proveedor examina el identificador de objeto para determinar cómo responder al mensaje. La respuesta depende de si la aplicación receptora implementa microsoft Active Accessibility (un servidor), Automatización de la interfaz de usuario (un proveedor) o ninguno, para el objeto especificado.

  • Si la aplicación receptora es un servidor de accesibilidad activa de Microsoft y el mensaje de WM_GETOBJECT incluye un identificador de objeto de OBJID_CLIENT, el servidor debe devolver el valor obtenido pasando la interfaz IAccessible del objeto a la función LresultFromObject .
  • Si la aplicación receptora es un proveedor de Automatización de la interfaz de usuario y el identificador de objeto es UiaRootObjectId, el proveedor debe devolver la interfaz IRawElementProviderSimple del objeto. El proveedor obtiene la interfaz llamando a la función UiaReturnRawElementProvider .
  • Si la aplicación receptora no implementa ni microsoft Active Accessibility ni Automatización de la interfaz de usuario, debe pasar el mensaje WM_GETOBJECT a la función DefWindowProc. Pasar el mensaje permite que el marco de accesibilidad determine si hay un proxy disponible para el objeto especificado.
  • Si el identificador de objeto no es OBJID_CLIENT ni UiaRootObjectId, la aplicación receptora debe pasar el mensaje WM_GETOBJECT a la función DefWindowProc . Pasar el mensaje permite que el marco de accesibilidad use los proveedores predeterminados para los elementos estándar de la interfaz de usuario.

Microsoft Active Accessibility y Automatización de la interfaz de usuario pueden pasar identificadores de objeto personalizados en un mensaje de WM_GETOBJECT para recuperar los valores definidos por la aplicación u objetos de un servidor o proveedor. El identificador de objeto OBJID_NATIVEOM o OBJID_QUERYCLASSNAMEIDX se puede usar para recuperar una interfaz nativa del modelo de objetos o para solicitar un objeto proxy específico admitido por Oleacc.dll.

Mediante el control de los identificadores de objeto OBJID_CLIENT y UiaRootObjectId, una implementación del servidor de accesibilidad activa de Microsoft puede coexistir junto con una implementación del proveedor de Automatización de la interfaz de usuario. Dado que la mayoría de los controles estándar de Windows y los controles comunes implementados por la biblioteca de controles comunes (ComCtl32.dll) no implementan la accesibilidad activa de Microsoft o Automatización de la interfaz de usuario, estos controles normalmente no controlan el mensaje de WM_GETOBJECT. En su lugar, microsoft Active Accessibility o Automatización de la interfaz de usuario framework comprueba si un objeto proxy está disponible para un elemento de interfaz de usuario determinado. De lo contrario, proporciona el objeto proxy predeterminado para el objeto de ventana host.