IOleCommandTarget::Exec-Methode (docobj.h)
Führt den angegebenen Befehl aus oder zeigt Hilfe für den Befehl an.
Syntax
HRESULT Exec(
[in] const GUID *pguidCmdGroup,
[in] DWORD nCmdID,
[in] DWORD nCmdexecopt,
[in] VARIANT *pvaIn,
[in, out] VARIANT *pvaOut
);
Parameter
[in] pguidCmdGroup
Der eindeutige Bezeichner der Befehlsgruppe; kann NULL sein, um die Standardgruppe anzugeben.
[in] nCmdID
Der Befehl, der ausgeführt werden soll. Dieser Befehl muss zu der Gruppe gehören, die mit pguidCmdGroup angegeben ist.
[in] nCmdexecopt
Gibt an, wie das Objekt den Befehl ausführen soll. Mögliche Werte stammen aus den OLECMDEXECOPT - und OLECMDID_WINDOWSTATE_FLAG-Enumerationen .
[in] pvaIn
Ein Zeiger auf eine VARIANTARG-Struktur , die Eingabeargumente enthält. Dieser Parameter kann NULL sein.
[in, out] pvaOut
Zeiger auf eine VARIANTARG-Struktur zum Empfangen der Befehlsausgabe. Dieser Parameter kann NULL sein.
Rückgabewert
Diese Methode gibt S_OK bei Erfolg zurück. Weitere mögliche Rückgabewerte:
Rückgabecode | Beschreibung |
---|---|
|
Der pguidCmdGroup-Parameter ist nicht NULL , gibt aber keine erkannte Befehlsgruppe an. |
|
Der nCmdID-Parameter ist kein gültiger Befehl in der gruppe, die von pguidCmdGroup identifiziert wird. |
|
Der durch nCmdID identifizierte Befehl ist derzeit deaktiviert und kann nicht ausgeführt werden. |
|
Der Aufrufer hat um Hilfe zu dem von nCmdID identifizierten Befehl gebeten, aber es ist keine Hilfe verfügbar. |
|
Der Benutzer hat die Ausführung des Befehls abgebrochen. |
Hinweise
Die Liste der Eingabe- und Ausgabeargumente eines Befehls und deren Paket ist für jeden Befehl eindeutig. Diese Informationen sollten mit der Spezifikation der Befehlsgruppe dokumentiert werden. (Siehe beschreibung der OLECMDID_ZOOM in der OLECMDID-Enumeration .) Wenn keine spezifischen Informationen vorliegen, wird davon ausgegangen, dass der Befehl keine Argumente akzeptiert und keinen Rückgabewert aufweist.
Hinweise für Anrufer
Die Parameter pguidCmdGroup und nCmdID identifizieren den aufzurufenden Befehl eindeutig. Der Parameter nCmdExecOpt gibt die genaue Aktion an, die ausgeführt werden soll. (Weitere Informationen finden Sie in der OLECMDEXECOPT-Enumeration .)Die meisten Befehle nehmen weder Argumente an noch geben Werte zurück. Bei solchen Befehlen kann der Aufrufer NULL in pvaIn und pvaOut übergeben. Bei Befehlen, die einen oder mehrere Eingabewerte erwarten, kann der Aufrufer eine VARIANTARG-Variable deklarieren und initialisieren und einen Zeiger auf diese Variable in pvaIn übergeben. Wenn die Eingabe für den Befehl ein einzelner Wert ist, kann das Argument direkt in der VARIANTARG-Struktur gespeichert und an die Funktion übergeben werden. Wenn der Befehl mehrere Argumente erwartet, müssen diese Argumente unter Verwendung eines der unterstützten Typen (z. B. IDispatch oder SAFEARRAY) ordnungsgemäß innerhalb des VARIANTARG-Pakets verpackt werden.
Wenn ein Befehl ein oder mehrere Argumente zurückgibt, wird erwartet, dass der Aufrufer ein VARIANTARG deklariert, für VT_EMPTY initialisiert und seine Adresse in pvaOut übergibt. Wenn der Befehl einen einzelnen Wert zurückgibt, kann das Objekt diesen Wert direkt in pvaOut speichern. Wenn der Befehl über mehrere Ausgabewerte verfügt, werden diese in irgendeiner Weise verpackt, die für VARIANTARG geeignet sind.
Da pvaIn und pvOut aufruferseitig zugeordnet sind, sind Stapelvariablen sowohl für den Aufrufer als auch für das Objekt zulässig, das den Aufruf empfängt. Für Befehle, die null oder ein Argument bei der Eingabe verwenden und null oder einen Wert zurückgeben, ist keine zusätzliche Speicherbelegung erforderlich. Die meisten von VARIANTARG unterstützten Typen erfordern keine Speicherbelegung. Ausnahmen sind SAFEARRAY und BSTR.
Hinweise für Implementierer
Ein Befehlsziel muss diese Funktion implementieren. E_NOTIMPL ist kein gültiger Rückgabewert.Anforderungen
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | docobj.h |