다음을 통해 공유


IRawElementProviderWindowlessSite::GetRuntimeIdPrefix 메서드(uiautomationcore.h)

창이 없는 Microsoft ActiveX 컨트롤 사이트에 고유한 Microsoft UI 자동화 런타임 ID를 검색합니다.

구문

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

매개 변수

[out, retval] pRetVal

형식: SAFEARRAY**

런타임 ID를 받습니다.

반환 값

형식: HRESULT

메서드가 성공하면 S_OK를 반환하고, 그러지 않으면 HRESULT 오류 코드를 반환합니다.

설명

UI 자동화 조각은 조각에 대한 고유 ID를 반환하려면 IRawElementProviderFragment::GetRuntimeId 메서드를 구현해야 합니다. 이는 ActiveX 컨트롤 컨테이너의 다른 창 없는 컨트롤 중에서 고유한 것으로 식별할 수 있어야 하는 창 없는 ActiveX 컨트롤에는 어렵습니다. 이 문제를 resolve 위해 창 없는 사이트는 상수 UiaAppendRuntimeId를 포함하는 SAFEARRAY를 형성한 다음 이 창 없는 사이트에 고유한 정수 값을 형성하여 GetRuntimeIdPrefix 메서드를 구현해야 합니다.

그런 다음 조각은 창 없는 ActiveX 컨트롤의 다른 모든 조각을 기준으로 고유한 정수 값을 추가하고 클라이언트에 반환할 수 있습니다.

예를 들어 사이트는 다음과 같은 내용이 포함된 SAFEARRAY를 반환할 수 있습니다. { UiaAppendRuntimeId, 3 } 컨테이너의 세 번째 ActiveX 컨트롤을 나타낼 수 있습니다. 그런 다음, 조각 공급자의 GetRuntimeId 메서드는 다음과 같은 내용으로 SAFEARRAY를 형성할 수 있습니다. { UiaAppendRuntimeId, 3, 5 } ActiveX 컨테이너 내의 다섯 번째 조각을 나타낼 수 있습니다. 전체 SAFEARRAY는 전체 ActiveX 컨트롤 컨테이너에 상대적인 고유 ID입니다.

공급자는 일반적으로 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