共用方式為


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 方法,方法是形成包含常數 UiaAppendRuntimeIdSAFEARRAY,後面接著這個無視窗網站唯一的整數值。

接著,片段可以附加與無視窗 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)

另請參閱

IRawElementProviderWindowlessSite