Freigeben über


IDispatch::Invoke-Methode (oaidl.h)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit. Die Dispatchfunktion DispInvoke stellt eine Standardimplementierung von Invoke bereit.

Syntax

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

Bezeichnet den Member. Verwenden Sie GetIDsOfNames oder die Dokumentation des Objekts, um den Dispatchbezeichner abzurufen.

[in] riid

Für zukünftige Verwendung reserviert. Muss IID_NULL sein.

[in] lcid

Der Gebietsschemakontext, in dem Argumente interpretiert werden sollen. Die lcid wird von der GetIDsOfNames-Funktion verwendet und auch an Invoke übergeben, damit das Objekt seine Argumente für ein Gebietsschema interpretieren kann.

Anwendungen, die mehrere Landessprachen nicht unterstützen, können diesen Parameter ignorieren. Weitere Informationen finden Sie unter Unterstützen mehrerer Nationalsprachen und Verfügbarmachen von ActiveX-Objekten.

[in] wFlags

Flags, die den Kontext des Aufrufs "Invoke" beschreiben.

Wert Bedeutung
DISPATCH_METHOD
Der Member wird als Methode aufgerufen. Wenn eine Eigenschaft denselben Namen hat, können sowohl dieser als auch das DISPATCH_PROPERTYGET-Flag festgelegt werden.
DISPATCH_PROPERTYGET
Der Member wird als Eigenschaft oder Datenmember abgerufen.
DISPATCH_PROPERTYPUT
Das Element wird als Eigenschaft oder Datenmember geändert.
DISPATCH_PROPERTYPUTREF
Das Element wird durch eine Verweiszuweisung und nicht durch eine Wertzuweisung geändert. Dieses Flag ist nur gültig, wenn die -Eigenschaft einen Verweis auf ein -Objekt akzeptiert.

[in, out] pDispParams

Zeiger auf eine DISPPARAMS-Struktur, die ein Array von Argumenten, ein Array von Argument-DISPIDs für benannte Argumente und die Anzahl der Elemente in den Arrays enthält.

[out] pVarResult

Zeiger auf den Speicherort, an dem das Ergebnis gespeichert werden soll, oder NULL, wenn der Aufrufer kein Ergebnis erwartet. Dieses Argument wird ignoriert, wenn DISPATCH_PROPERTYPUT oder DISPATCH_PROPERTYPUTREF angegeben ist.

[out] pExcepInfo

Ein Zeiger auf eine Struktur mit Ausnahmeinformationen. Diese Struktur sollte ausgefüllt werden, wenn DISP_E_EXCEPTION zurückgegeben wird. Kann den Wert NULL haben.

[out] puArgErr

Der Index innerhalb von rgvarg des ersten Arguments, das einen Fehler aufweist. Argumente werden in pDispParams-rgvarg> in umgekehrter Reihenfolge gespeichert, sodass das erste Argument das Argument mit dem höchsten Index im Array ist. Dieser Parameter wird nur zurückgegeben, wenn der resultierende Rückgabewert DISP_E_TYPEMISMATCH oder DISP_E_PARAMNOTFOUND ist. Dieses Argument kann auf NULL festgelegt werden. Weitere Informationen finden Sie unter Zurückgeben von Fehlern.

Rückgabewert

Diese Methode kann einen dieser Werte zurückgeben.

Rückgabecode BESCHREIBUNG
S_OK
Erfolg.
DISP_E_BADPARAMCOUNT
Die Anzahl der für DISPPARAMS bereitgestellten Elemente unterscheidet sich von der Anzahl der Argumente, die von der Methode oder Eigenschaft akzeptiert werden.
DISP_E_BADVARTYPE
Eines der Argumente in DISPPARAMS ist kein gültiger Variantentyp.
DISP_E_EXCEPTION
Die Anwendung muss eine Ausnahme auslösen. In diesem Fall sollte die in pexcepinfo übergebene Struktur ausgefüllt werden.
DISP_E_MEMBERNOTFOUND
Das angeforderte Element ist nicht vorhanden.
DISP_E_NONAMEDARGS
Diese Implementierung von IDispatch unterstützt keine benannten Argumente.
DISP_E_OVERFLOW
Eines der Argumente in DISPPARAMS konnte nicht in den angegebenen Typ umgewandelt werden.
DISP_E_PARAMNOTFOUND
Eine der Parameter-IDs entspricht keinem Parameter für die -Methode. In diesem Fall wird puArgErr auf das erste Argument festgelegt, das den Fehler enthält.
DISP_E_TYPEMISMATCH
Mindestens eines der Argumente konnte nicht zwangsweise verwendet werden. Der Index des ersten Parameters mit dem falschen Typ innerhalb von rgvarg wird in puArgErr zurückgegeben.
DISP_E_UNKNOWNINTERFACE

Der in riid übergebene Schnittstellenbezeichner ist nicht IID_NULL.
DISP_E_UNKNOWNLCID
Der aufgerufene Member interpretiert Zeichenfolgenargumente entsprechend der LCID, und die LCID wird nicht erkannt. Wenn die LCID zum Interpretieren von Argumenten nicht benötigt wird, sollte dieser Fehler nicht zurückgegeben werden.
DISP_E_PARAMNOTOPTIONAL
Ein erforderlicher Parameter wurde weggelassen.

Hinweise

Im Allgemeinen sollten Sie Invoke nicht direkt implementieren. Verwenden Sie stattdessen die Dispatchschnittstelle, um die Funktionen CreateStdDispatch und DispInvoke zu erstellen. Weitere Informationen finden Sie unter CreateStdDispatch, DispInvoke, Erstellen der IDispatch-Schnittstelle und Verfügbarmachen von ActiveX-Objekten.

Wenn vor dem Aufrufen eines Members eine anwendungsspezifische Verarbeitung ausgeführt werden muss, sollte der Code die erforderlichen Aktionen ausführen und dann ITypeInfo::Invoke aufrufen, um den Member aufzurufen. ITypeInfo::Invoke verhält sich genau wie Invoke. Die Standardimplementierungen von Invoke , die von CreateStdDispatch und DispInvoke erstellt wurden, verschieben sich auf ITypeInfo::Invoke.

In einem ActiveX-Client sollte Invoke verwendet werden, um die Werte von Eigenschaften abzurufen und festzulegen oder um eine Methode eines ActiveX-Objekts aufzurufen. Das Argument dispIdMember identifiziert den aufzurufenden Member. Die DISPIDs, die Member identifizieren, werden vom Implementierer des Objekts definiert und können mithilfe der Dokumentation des Objekts, der IDispatch::GetIDsOfNames-Funktion oder der ITypeInfo-Schnittstelle bestimmt werden.

Wenn Sie IDispatch::Invoke() mit DISPATCH_PROPERTYPUT oder DISPATCH_PROPERTYPUTREF verwenden, müssen Sie die Elemente cNamedArgs und rgdispidNamedArgs Ihrer DISPPARAMS-Struktur speziell wie folgt initialisieren:

DISPID dispidNamed = DISPID_PROPERTYPUT;
dispparams.cNamedArgs = 1;
dispparams.rgdispidNamedArgs = &dispidNamed;

Die folgenden Informationen adressieren Entwickler von ActiveX-Clients und andere Benutzer, die Code verwenden, um ActiveX-Objekte verfügbar zu machen. Es beschreibt das Verhalten, das Benutzer von verfügbar gemachten Objekten erwarten sollten.

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile oaidl.h

Weitere Informationen

IDispatch