IRawElementProviderWindowlessSite::GetRuntimeIdPrefix 方法 (uiautomationcore.h)
擷取無視窗 Microsoft ActiveX 控件網站唯一的 Microsoft 使用者介面自動化 運行時間識別符。
語法
HRESULT GetRuntimeIdPrefix(
[out, retval] SAFEARRAY **pRetVal
);
參數
[out, retval] pRetVal
類型: SAFEARRAY**
接收運行時間標識碼。
傳回值
類型: HRESULT
如果此方法成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。
備註
使用者介面自動化 片段必須實作 IRawElementProviderFragment::GetRuntimeId 方法,才能傳回片段的唯一標識符。 對於無視窗 ActiveX 控制件而言,這很難識別出本身在 ActiveX 控件容器中的其他無視窗控制件中是唯一的。 若要解決此問題,無視窗網站應該實作 GetRuntimeIdPrefix 方法,方法是形成包含常數 UiaAppendRuntimeId 的 SAFEARRAY,後面接著這個無視窗網站唯一的整數值。
接著,片段可以附加與無視窗 ActiveX 控件中所有其他片段唯一的整數值,並將它傳回給用戶端。
例如,月臺可能會傳回具有下列內容的SAFEARRAY: { UiaAppendRuntimeId, 3 }
。 這可能代表容器中的第三個 ActiveX 控制件。 片段提供者的 GetRuntimeId 方法接著可以形成具有下列內容的 SAFEARRAY: { UiaAppendRuntimeId, 3, 5 }
。 這可能代表 ActiveX 容器內的第五個片段。 整個 SAFEARRAY 會是相對於整個 ActiveX 控件容器的唯一標識碼。
提供者通常會在處理 GetRuntimeId 方法時呼叫這個方法。
範例
下列 C++ 程式代碼範例示範如何實作 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;
}
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 8 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2012 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | uiautomationcore.h (包含 UIAutomation.h) |