Partager via


Méthode IRawElementProviderWindowlessSite ::GetRuntimeIdPrefix (uiautomationcore.h)

Récupère un ID d’exécution Microsoft UI Automation unique au site de contrôle Microsoft ActiveX sans fenêtre.

Syntaxe

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

Paramètres

[out, retval] pRetVal

Type : SAFEARRAY**

Reçoit l’ID d’exécution.

Valeur retournée

Type : HRESULT

Si cette méthode réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT.

Remarques

Un fragment UI Automation doit implémenter la méthode IRawElementProviderFragment ::GetRuntimeId pour retourner un ID unique pour le fragment. Cela est difficile pour un contrôle ActiveX sans fenêtre, qui doit être en mesure de s’identifier comme unique parmi les autres contrôles sans fenêtre dans le conteneur de contrôles ActiveX. Pour résoudre ce problème, le site sans fenêtre doit implémenter la méthode GetRuntimeIdPrefix en formant un SAFEARRAY qui contient la constante UiaAppendRuntimeId, suivie d’une valeur entière propre à ce site sans fenêtre.

Le fragment peut ensuite ajouter une valeur entière unique par rapport à tous les autres fragments du contrôle ActiveX sans fenêtre et la retourner au client.

Par exemple, le site peut retourner un SAFEARRAY avec le contenu suivant : { UiaAppendRuntimeId, 3 }. Cela peut représenter le troisième contrôle ActiveX dans le conteneur. La méthode GetRuntimeId du fournisseur de fragments peut ensuite former un SAFEARRAY avec le contenu suivant : { UiaAppendRuntimeId, 3, 5 }. Cela peut représenter le cinquième fragment dans le conteneur ActiveX. L’ensemble de SAFEARRAY serait un ID unique relatif à l’ensemble du conteneur de contrôle ActiveX.

Un fournisseur appelle généralement cette méthode dans le cadre de la gestion de la méthode GetRuntimeId .

Exemples

L’exemple de code C++ suivant montre comment implémenter la méthode 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;  
}  

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8 [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows Server 2012 [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête uiautomationcore.h (incluez UIAutomation.h)

Voir aussi

IRawElementProviderWindowlessSite