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) |