Metode IRawElementProviderWindowlessSite::GetRuntimeIdPrefix (uiautomationcore.h)
Mengambil ID runtime Microsoft UI Automation yang unik untuk situs kontrol Microsoft ActiveX tanpa jendela.
Sintaks
HRESULT GetRuntimeIdPrefix(
[out, retval] SAFEARRAY **pRetVal
);
Parameter
[out, retval] pRetVal
Jenis: SAFEARRAY**
Menerima ID runtime.
Nilai kembali
Jenis: HRESULT
Jika metode ini berhasil, metode akan mengembalikan S_OK. Jika tidak, kode kesalahan HRESULT akan dikembalikan.
Keterangan
Fragmen Automation UI harus mengimplementasikan metode IRawElementProviderFragment::GetRuntimeId untuk mengembalikan ID unik untuk fragmen. Ini sulit untuk kontrol ActiveX tanpa jendela, yang harus dapat mengidentifikasi dirinya sebagai unik di antara kontrol tanpa jendela lainnya dalam kontainer kontrol ActiveX. Untuk mengatasi masalah ini, situs tanpa jendela harus menerapkan metode GetRuntimeIdPrefix dengan membentuk SAFEARRAY yang berisi UiaAppendRuntimeId konstan, diikuti dengan nilai bilangan bulat yang unik untuk situs tanpa jendela ini.
Fragmen kemudian dapat menambahkan nilai bilangan bulat yang unik relatif terhadap semua fragmen lain dalam kontrol ActiveX tanpa jendela, dan mengembalikannya ke klien.
Misalnya, situs mungkin mengembalikan SAFEARRAY dengan konten berikut: { UiaAppendRuntimeId, 3 }
. Ini mungkin mewakili kontrol ActiveX ketiga dalam kontainer. Metode GetRuntimeId penyedia fragmen kemudian dapat membentuk SAFEARRAY dengan konten berikut: { UiaAppendRuntimeId, 3, 5 }
. Ini mungkin mewakili fragmen kelima dalam kontainer ActiveX. Seluruh SAFEARRAY akan menjadi ID unik yang relatif terhadap seluruh kontainer kontrol ActiveX.
Penyedia biasanya memanggil metode ini sebagai bagian dari penanganan metode GetRuntimeId .
Contoh
Contoh kode C++ berikut menunjukkan cara mengimplementasikan metode 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;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 8 [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows Server 2012 [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | uiautomationcore.h (termasuk UIAutomation.h) |