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