IRawElementProviderWindowlessSite::GetRuntimeIdPrefix-Methode (uiautomationcore.h)

Ruft eine Microsoft Benutzeroberflächenautomatisierung-Laufzeit-ID ab, die für die fensterlose Microsoft ActiveX-Steuerelementwebsite eindeutig ist.

Syntax

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

Parameter

[out, retval] pRetVal

Typ: SAFEARRAY**

Empfängt die Laufzeit-ID.

Rückgabewert

Typ: HRESULT

Wenn diese Methode erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein Fehlercode HRESULT zurückgegeben.

Hinweise

Ein Benutzeroberflächenautomatisierung Fragment muss die IRawElementProviderFragment::GetRuntimeId-Methode implementieren, um eine eindeutige ID für das Fragment zurückzugeben. Dies ist schwierig für ein fensterloses ActiveX-Steuerelement, das sich unter anderen fensterlosen Steuerelementen im ActiveX-Steuerelementcontainer als eindeutig identifizieren kann. Um dieses Problem zu beheben, sollte die fensterlose Website die GetRuntimeIdPrefix-Methode implementieren, indem sie ein SAFEARRAY mit der Konstanten UiaAppendRuntimeId und anschließend einem ganzzahligen Wert erstellt, der für diese fensterlose Website eindeutig ist.

Das Fragment kann dann einen ganzzahligen Wert anfügen, der im Verhältnis zu allen anderen Fragmenten im fensterlosen ActiveX-Steuerelement eindeutig ist, und ihn an den Client zurückgeben.

Beispielsweise kann die Website ein SAFEARRAY mit dem folgenden Inhalt zurückgeben: { UiaAppendRuntimeId, 3 }. Dies kann das dritte ActiveX-Steuerelement im Container darstellen. Die GetRuntimeId-Methode des Fragmentanbieters könnte dann ein SAFEARRAY mit folgendem Inhalt bilden: { UiaAppendRuntimeId, 3, 5 }. Dies kann das fünfte Fragment innerhalb des ActiveX-Containers darstellen. Das gesamte SAFEARRAY wäre eine eindeutige ID im Verhältnis zum gesamten ActiveX-Steuerelementcontainer.

Ein Anbieter ruft diese Methode in der Regel im Rahmen der Behandlung der GetRuntimeId-Methode auf.

Beispiele

Das folgende C++-Codebeispiel zeigt, wie die GetRuntimeIdPrefix-Methode implementiert wird.

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;  
}  

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8 [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2012 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile uiautomationcore.h (include UIAutomation.h)

Weitere Informationen

IRawElementProviderWindowlessSite