Compartir a través de


Cómo exponer un proveedor de Server-Side Automatización de la interfaz de usuario

Este tema contiene código de ejemplo que muestra cómo exponer un proveedor de Microsoft Automatización de la interfaz de usuario del lado servidor para un control personalizado.

Microsoft Automatización de la interfaz de usuario envía el mensaje WM_GETOBJECT a una aplicación de proveedor para recuperar información sobre un objeto accesible admitido por el proveedor. 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.

Cuando un proveedor recibe un mensaje de WM_GETOBJECT , debe comprobar si el parámetro lParam es igual a UiaRootObjectId. Si es así, el proveedor debe devolver la interfaz IRawElementProviderSimple del objeto . El proveedor devuelve la interfaz llamando a la función UiaReturnRawElementProvider .

En el ejemplo siguiente se muestra cómo responder a WM_GETOBJECT.

    // Expose the custom button's server-side provider to UI Automation.
    case WM_GETOBJECT:
        {
            // If lParam matches UiaRootObjectId, return IRawElementProviderSimple.
            if (static_cast<long>(lParam) == static_cast<long>(UiaRootObjectId))
            {
                // Retrieve the pointer to the custom button object from the
                // window data.
                CustomButton* pControl = reinterpret_cast<CustomButton*>(
                    GetWindowLongPtr(hwnd, GWLP_USERDATA));

                // Call an application-defined method to get the
                // IRawElementProviderSimple pointer.
                IRawElementProviderSimple* pRootProvider = 
                    pControl->GetUIAutomationProvider(hwnd);

                // Return the IRawElementProviderSimple pointer to UI Automation.
                return UiaReturnRawElementProvider(hwnd, wParam, lParam, 
                    pRootProvider);
            }
            return 0;
        }

Conceptual

Implementación de un proveedor de Server-Side Automatización de la interfaz de usuario

Mensaje de WM_GETOBJECT

Temas de procedimientos para proveedores de Automatización de la interfaz de usuario