IDispatch::Memanggil metode (oaidl.h)
Menyediakan akses ke properti dan metode yang diekspos oleh objek. Fungsi pengiriman DispInvoke menyediakan implementasi standar Invoke.
Sintaks
HRESULT Invoke(
[in] DISPID dispIdMember,
[in] REFIID riid,
[in] LCID lcid,
[in] WORD wFlags,
[in, out] DISPPARAMS *pDispParams,
[out] VARIANT *pVarResult,
[out] EXCEPINFO *pExcepInfo,
[out] UINT *puArgErr
);
Parameter
[in] dispIdMember
Mengidentifikasi anggota. Gunakan GetIDsOfNames atau dokumentasi objek untuk mendapatkan pengidentifikasi pengiriman.
[in] riid
Disiapkan untuk penggunaan masa mendatang. Pasti IID_NULL.
[in] lcid
Konteks lokal untuk menginterpretasikan argumen. lcid digunakan oleh fungsi GetIDsOfNames, dan juga diteruskan ke Invoke untuk memungkinkan objek menginterpretasikan argumennya khusus untuk lokal.
Aplikasi yang tidak mendukung beberapa bahasa nasional dapat mengabaikan parameter ini. Untuk informasi selengkapnya, lihat Mendukung Beberapa Bahasa Nasional dan Mengekspos Objek ActiveX.
[in] wFlags
Bendera yang menjelaskan konteks panggilan Panggil .
[in, out] pDispParams
Penunjuk ke struktur DISPPARAMS yang berisi array argumen, array DISPID argumen untuk argumen bernama, dan hitungan untuk jumlah elemen dalam array.
[out] pVarResult
Arahkan ke lokasi tempat hasil disimpan, atau NULL jika pemanggil tidak mengharapkan hasil. Argumen ini diabaikan jika DISPATCH_PROPERTYPUT atau DISPATCH_PROPERTYPUTREF ditentukan.
[out] pExcepInfo
Penunjuk ke struktur yang berisi informasi pengecualian. Struktur ini harus diisi jika DISP_E_EXCEPTION dikembalikan. Bisa NULL.
[out] puArgErr
Indeks dalam rgvarg dari argumen pertama yang memiliki kesalahan. Argumen disimpan dalam pDispParams-rgvarg> dalam urutan terbalik, sehingga argumen pertama adalah argumen dengan indeks tertinggi dalam array. Parameter ini dikembalikan hanya ketika nilai pengembalian yang dihasilkan DISP_E_TYPEMISMATCH atau DISP_E_PARAMNOTFOUND. Argumen ini dapat diatur ke null. Untuk detailnya, lihat Mengembalikan Kesalahan.
Mengembalikan nilai
Metode ini dapat mengembalikan salah satu nilai ini.
Menampilkan kode | Deskripsi |
---|---|
|
Berhasil. |
|
Jumlah elemen yang disediakan untuk DISPPARAMS berbeda dari jumlah argumen yang diterima oleh metode atau properti . |
|
Salah satu argumen dalam DISPPARAMS bukan jenis varian yang valid. |
|
Aplikasi perlu menaikkan pengecualian. Dalam hal ini, struktur yang diteruskan dalam pexcepinfo harus diisi. |
|
Anggota yang diminta tidak ada. |
|
Implementasi IDispatch ini tidak mendukung argumen bernama. |
|
Salah satu argumen dalam DISPPARAMS tidak dapat dikoercasi ke jenis yang ditentukan. |
|
Salah satu ID parameter tidak sesuai dengan parameter pada metode . Dalam hal ini, puArgErr diatur ke argumen pertama yang berisi kesalahan. |
|
Satu atau beberapa argumen tidak dapat dipaksa. Indeks parameter pertama dengan jenis yang salah dalam rgvarg dikembalikan dalam puArgErr. |
|
Pengidentifikasi antarmuka yang diteruskan dalam riid tidak IID_NULL. |
|
Anggota yang dipanggil menginterpretasikan argumen string menurut LCID, dan LCID tidak dikenali. Jika LCID tidak diperlukan untuk menginterpretasikan argumen, kesalahan ini tidak boleh dikembalikan |
|
Parameter yang diperlukan dihilangkan. |
Keterangan
Umumnya, Anda tidak boleh menerapkan Invoke secara langsung. Sebagai gantinya, gunakan antarmuka pengiriman untuk membuat fungsi CreateStdDispatch dan DispInvoke. Untuk detailnya, lihat CreateStdDispatch, DispInvoke, Membuat Antarmuka IDispatch dan Mengekspos Objek ActiveX.
Jika beberapa pemrosesan khusus aplikasi perlu dilakukan sebelum memanggil anggota, kode harus melakukan tindakan yang diperlukan, lalu memanggil ITypeInfo::Invoke untuk memanggil anggota. ITypeInfo::Invoke bertindak persis seperti Invoke. Implementasi standar Invoke yang dibuat oleh CreateStdDispatch dan DispInvoke menunda ke ITypeInfo::Invoke.
Dalam klien ActiveX, Panggil harus digunakan untuk mendapatkan dan mengatur nilai properti, atau untuk memanggil metode objek ActiveX. Argumen dispIdMember mengidentifikasi anggota yang akan dipanggil. DISPID yang mengidentifikasi anggota ditentukan oleh pelaksana objek dan dapat ditentukan dengan menggunakan dokumentasi objek, fungsi IDispatch::GetIDsOfNames , atau antarmuka ITypeInfo .
Saat Anda menggunakan IDispatch::Invoke() dengan DISPATCH_PROPERTYPUT atau DISPATCH_PROPERTYPUTREF, Anda harus menginisialisasi elemen cNamedArgs dan rgdispidNamedArgs secara khusus dari struktur DISPPARAMS Anda dengan yang berikut:
DISPID dispidNamed = DISPID_PROPERTYPUT;
dispparams.cNamedArgs = 1;
dispparams.rgdispidNamedArgs = &dispidNamed;
Informasi yang mengikuti membahas pengembang klien ActiveX dan orang lain yang menggunakan kode untuk mengekspos objek ActiveX. Ini menjelaskan perilaku yang harus diharapkan pengguna objek yang terekspos.
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Windows |
Header | oaidl.h |