Bagikan melalui


Metode IRawElementProviderSimple::GetPropertyValue (uiautomationcore.h)

Mengambil nilai properti yang didukung oleh penyedia Microsoft UI Automation.

Sintaks

HRESULT GetPropertyValue(
  [in]          PROPERTYID propertyId,
  [out, retval] VARIANT    *pRetVal
);

Parameter

[in] propertyId

Jenis: PROPERTYID

Pengidentifikasi properti. Untuk daftar ID properti, lihat Pengidentifikasi Properti.

[out, retval] pRetVal

Jenis: VARIAN*

Menerima nilai properti, atau VT_EMPTY jika properti tidak didukung oleh penyedia ini. Parameter ini diteruskan tanpa diinisialisasi. Lihat Keterangan.

Nilai kembali

Jenis: HRESULT

Jika metode ini berhasil, metode ini mengembalikan S_OK. Jika tidak, kode kesalahan HRESULT akan dikembalikan.

Jika penyedia tidak mendukung properti propertyId, penyedia harus mengatur pRetVal-vt> ke VT_EMPTY dan mengembalikan S_OK.

Keterangan

Jika penyedia secara eksplisit menyembunyikan nilai properti (yaitu, penyedia tidak menyediakan properti , dan permintaan tidak akan diteruskan ke penyedia lain), penyedia harus mengembalikan pointer yang diperoleh dengan menggunakan fungsi UiaGetReservedNotSupportedValue . Contohnya:

pRetVal->vt = VT_UNKNOWN;
UiaGetReservedNotSupportedValue(&pRetVal->punkVal);

Properti Automasi UI dari jenis ganda mendukung nilai Bukan Angka (NaN). Saat mengembalikan nilai NaN, penyedia harus mengembalikan NaN yang tenang (tidak memberi sinyal) untuk menghindari menaikkan pengecualian jika pengecualian floating-point diaktifkan. Contoh berikut menunjukkan cara membuat NaN yang tenang:

ULONGLONG ulNaN = 0xFFFFFFFFFFFFFFFF;
    *pRetVal = *reinterpret_cast<double*>(&ulNaN);

Atau, Anda dapat menggunakan fungsi berikut dari pustaka C++ standar:

numeric_limits<double>::quiet_NaN( )

Contoh

Contoh berikut mengembalikan berbagai nilai properti. Struktur UiaIds berisi pengidentifikasi properti; untuk melihat cara menginisialisasinya, lihat UiaLookupId.


HRESULT STDMETHODCALLTYPE Provider::GetPropertyValue(PROPERTYID propertyId, 
        VARIANT* pRetVal)
{
    if (propertyId == UiaIds.ControlTypeProperty)
    {
        pRetVal->vt = VT_I4;
        pRetVal->lVal = UiaIds.ButtonControlType;
    }

    // The Name property normally comes from the Caption property of the 
    // control window, if it has one. The Name is overridden here for the 
    // sake of illustration. 
    else if (propertyId == UiaIds.NameProperty)
    {
        pRetVal->vt = VT_BSTR;
        pRetVal->bstrVal = SysAllocString(L"ColorButton");
    }
    else
    {
        pRetVal->vt = VT_EMPTY;
        // UI Automation will attempt to get the property from the host 
        //window provider.
    }
    return S_OK;
}
            

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2003 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header uiautomationcore.h (termasuk UIAutomation.h)

Lihat juga

IRawElementProviderSimple