Bagikan melalui


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)

Lihat juga

IRawElementProviderWindowlessSite