Condividi tramite


Metodo IRawElementProviderWindowlessSite::GetRuntimeIdPrefix (uiautomationcore.h)

Recupera un ID runtime di Microsoft Automazione interfaccia utente univoco per il sito di controllo Microsoft ActiveX senza finestra.

Sintassi

HRESULT GetRuntimeIdPrefix(
  [out, retval] SAFEARRAY **pRetVal
);

Parametri

[out, retval] pRetVal

Tipo: SAFEARRAY**

Riceve l'ID runtime.

Valore restituito

Tipo: HRESULT

Se questo metodo ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .

Commenti

Un frammento di Automazione interfaccia utente deve implementare il metodo IRawElementProviderFragment::GetRuntimeId per restituire un ID univoco per il frammento. Questo è difficile per un controllo ActiveX senza finestra, che deve essere in grado di identificarsi come univoco tra altri controlli senza finestra nel contenitore di controllo ActiveX. Per risolvere questo problema, il sito senza finestra deve implementare il metodo GetRuntimeIdPrefix forming a SAFEARRAY contenente la costante UiaAppendRuntimeId, seguita da un valore integer univoco per questo sito senza finestre.

Il frammento può quindi aggiungere un valore intero univoco rispetto a tutti gli altri frammenti nel controllo ActiveX senza finestre e restituirlo al client.

Ad esempio, il sito potrebbe restituire un oggetto SAFEARRAY con il contenuto seguente: { UiaAppendRuntimeId, 3 }. Ciò potrebbe rappresentare il terzo controllo ActiveX nel contenitore. Il metodo GetRuntimeId del provider di frammenti potrebbe quindi formare un oggetto SAFEARRAY con il contenuto seguente: { UiaAppendRuntimeId, 3, 5 }. Ciò potrebbe rappresentare il quinto frammento all'interno del contenitore ActiveX. L'intero oggetto SAFEARRAY è un ID univoco relativo all'intero contenitore di controllo ActiveX.

Un provider chiama in genere questo metodo come parte della gestione del metodo GetRuntimeId .

Esempio

Nell'esempio di codice C++ seguente viene illustrato come implementare il metodo GetRuntimeIdPrefix .

IFACEMETHODIMP CProviderWindowlessSite::GetRuntimeIdPrefix(   
     SAFEARRAY **ppsaPrefix)   
{   
    if (ppsaPrefix == NULL) 
    {
        return E_INVALIDARG;
    }

    // m_siteIndex is the index of the windowless control's
    // site. It is defined by the control container.
    int rId[] = { UiaAppendRuntimeId, m_siteIndex };
    SAFEARRAY *psa = SafeArrayCreateVector(VT_I4, 0, 2);  
    if (psa == NULL)
    {
        return E_OUTOFMEMORY;
    }

    for (LONG i = 0; i < 2; i++)
    {
        SafeArrayPutElement(psa, &i, (void*)&(rId[i]));
    }

    *ppsaPrefix = psa;  
    return S_OK;  
}  

Requisiti

Requisito Valore
Client minimo supportato Windows 8 [app desktop | App UWP]
Server minimo supportato Windows Server 2012 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione uiautomationcore.h (includere UIAutomation.h)

Vedi anche

IRawElementProviderWindowlessSite