Condividi tramite


Come esporre un provider di automazione della interfaccia utente Server-Side

Questo argomento contiene codice di esempio che illustra come esporre un provider di automazione interfaccia utente Microsoft lato server per un controllo personalizzato.

Automazione interfaccia utente Microsoft invia il messaggio di WM_GETOBJECT a un'applicazione del provider per recuperare informazioni su un oggetto accessibile supportato dal provider. UI Automation invia WM_GETOBJECT quando un client chiama IUIAutomation::ElementFromHandle, ElementFromPointe GetFocusedElemente quando gestisce gli eventi per cui il client è registrato.

Quando un provider riceve un messaggio di WM_GETOBJECT, deve verificare se il parametro lParam è uguale a UiaRootObjectId. In caso affermativo, il provider deve restituire l'interfacciaIRawElementProviderSimple dell'oggetto. Il provider restituisce l'interfaccia chiamando la funzione UiaReturnRawElementProvider.

Nell'esempio seguente viene illustrato come rispondere 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;
        }

concettuale

Implementazione di un provider di automazione interfaccia utente Server-Side

Il messaggio WM_GETOBJECT

argomenti How-To per i provider di automazione dell'interfaccia utente