IDispatch::Invoke-Methode (oaidl.h)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit. Die Versandfunktion DispInvoke stellt eine Standardimplementierung von Aufruf 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 Versandbezeichner 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 Funktion GetIDsOfNames verwendet und wird auch an Aufruf übergeben, um das Objekt zu ermöglichen, seine Argumente speziell für ein Gebietsschema zu interpretieren.

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

[in] wFlags

Flags, die den Kontext des Aufrufaufrufs beschreiben.

Wert Bedeutung
DISPATCH_METHOD
Das Element wird als Methode aufgerufen. Wenn eine Eigenschaft denselben Namen hat, können sowohl dies als auch das DISPATCH_PROPERTYGET-Flag festgelegt werden.
DISPATCH_PROPERTYGET
Das Element wird als Eigenschaft oder Datenmitglied abgerufen.
DISPATCH_PROPERTYPUT
Das Element wird als Eigenschaft oder Datenmitglied geändert.
DISPATCH_PROPERTYPUTREF
Das Element wird durch eine Referenzzuweisung 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 mit einem Array von Argumenten, einem Array von Argument DISPIDs für benannte Argumente und zählt für die Anzahl der Elemente in den Arrays.

[out] pVarResult

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

[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, daher ist das erste Argument das erste Argument mit dem höchsten Index im Array. 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. Ausführliche 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
Eine der Argumente in DISPPARAMS ist kein gültiger Variant-Typ.
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 Mitglied ist nicht vorhanden.
DISP_E_NONAMEDARGS
Diese Implementierung von IDispatch unterstützt keine benannten Argumente.
DISP_E_OVERFLOW
Eine der Argumente in DISPPARAMS konnte nicht an den angegebenen Typ gebindet werden.
DISP_E_PARAMNOTFOUND
Eine der Parameter-IDs entspricht nicht einem Parameter auf der Methode. In diesem Fall wird puArgErr auf das erste Argument festgelegt, das den Fehler enthält.
DISP_E_TYPEMISMATCH
Eine oder mehrere Argumente konnten nicht koerziert 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
Das aufgerufene Element interpretiert Zeichenfolgenargumente gemäß der LCID, und die LCID wird nicht erkannt. Wenn die LCID nicht zum Interpretieren von Argumenten benötigt wird, sollte dieser Fehler nicht zurückgegeben werden.
DISP_E_PARAMNOTOPTIONAL
Ein erforderlicher Parameter wurde nicht angegeben.

Hinweise

Im Allgemeinen sollten Sie "Aufruf " nicht direkt implementieren. Verwenden Sie stattdessen die Versandschnittstelle, um Funktionen CreateStdDispatch und DispInvoke zu erstellen. Ausführliche Informationen finden Sie unter CreateStdDispatch, DispInvoke, Erstellen der IDispatch-Schnittstelle und Exposing ActiveX-Objekte.

Wenn einige anwendungsspezifische Verarbeitung vor dem Aufrufen eines Members ausgeführt werden muss, sollte der Code die erforderlichen Aktionen ausführen und dann ITypeInfo::Aufrufen des Elements aufrufen. ITypeInfo::Invoke funktioniert genau wie "Aufruf". Die Standardimplementierungen von Aufruf, die von CreateStdDispatch und DispInvoke auf ITypeInfo::Invoke erstellt wurden.

In einem ActiveX-Client sollte Aufruf verwendet werden, um die Werte von Eigenschaften abzurufen und festzulegen oder eine Methode eines ActiveX-Objekts aufzurufen. Das Argument "dispIdMember " identifiziert das Element, das aufgerufen werden soll. Die DISPIDs, die Elemente identifizieren, werden durch den Implementierunger 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 cNamedArgs- und rgdispidNamedArgs-Elemente Ihrer DISPPARAMS-Struktur speziell initialisieren:

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

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

Anforderungen

   
Zielplattform Windows
Kopfzeile oaidl.h

Weitere Informationen

IDispatch