IContextMenu::InvokeCommand-Methode (shobjidl_core.h)
Führt den Befehl aus, der einem Kontextmenüelement zugeordnet ist.
Syntax
HRESULT InvokeCommand(
CMINVOKECOMMANDINFO *pici
);
Parameter
pici
Typ: LPCMINVOKECOMMANDINFO
Ein Zeiger auf eine CMINVOKECOMMANDINFO - oder CMINVOKECOMMANDINFOEX-Struktur , die Besonderheiten zum Befehl enthält.
Rückgabewert
Typ: HRESULT
Wenn diese Methode erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein Fehlercode HRESULT zurückgegeben.
Hinweise
Die IContextMenu-Schnittstelle wird von mehreren Shell-Erweiterungshandlern und Namespaceerweiterungen exportiert. Sie wird verwendet, um Kontextmenüs Befehle hinzuzufügen. Wenn der Benutzer einen der Befehle auswählt, den der Handler oder die Namespaceerweiterung einem Kontextmenü hinzugefügt hat, ruft die Shell die InvokeCommand-Methode dieses Befehls auf. Der Befehl kann durch seinen Menübezeichneroffset angegeben werden, der beim Aufruf von IContextMenu::QueryContextMenu definiert wurde, oder durch das zugehörige Verb. Eine Anwendung kann diese Methode direkt aufrufen, indem sie einen Zeiger auf die IContextMenu-Schnittstelle eines Objekts erhält. Eine Anwendung kann diese Methode auch indirekt aufrufen, indem sie ShellExecute oder ShellExecuteEx aufruft und ein Verb angibt, das von der Namespaceerweiterung oder dem -Handler unterstützt wird.
Hinweis für Benutzer
Obwohl der pici-Parameter in Shlobj.h als CMINVOKECOMMANDINFO-Struktur deklariert wird, können Sie entweder CMINVOKECOMMANDINFO oder CMINVOKECOMMANDINFOEX verwenden. Beides funktioniert für ANSI-Zeichenfolgen, aber Sie müssen eine CMINVOKECOMMANDINFOEX-Struktur für Unicode-Zeichenfolgen verwenden.Hinweise für Implementierer
Überprüfen Sie das cbSize-Element von pici , um zu bestimmen, welche Struktur (CMINVOKECOMMANDINFO oder CMINVOKECOMMANDINFOEX) übergeben wurde. Wenn es sich um eine CMINVOKECOMMANDINFOEX-Struktur handelt und für das fMask-Element das flag CMIC_MASK_UNICODE festgelegt ist, müssen Sie pici in CMINVOKECOMMANDINFOEX umwandeln, um die Unicode-Informationen zu verwenden, die in den letzten fünf Membern der Struktur enthalten sind.Wenn das Verb, das entweder durch einen kanonischen Verbnamen oder die Befehls-ID angegeben wird, vom Kontextmenühandler nicht erkannt wird, muss es einen Fehler (E_FAIL) zurückgeben, damit das Verb an andere Kontextmenühandler übergeben werden kann, die es möglicherweise implementieren.
Ab Windows Vista reicht es nicht aus, den Befehl asynchron aufzurufen, indem sie einfach das flag CMIC_MASK_ASYNCOK im fMask-Element der CMINVOKECOMMANDINFO - oder CMINVOKECOMMANDINFOEX-Struktur festlegen. Sie müssen auch einen Threadverweis für den aufrufenden Thread festlegen, wie unter Verwalten von Threadverweisen erläutert.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | shobjidl_core.h (shobjidl.h einschließen) |
DLL | Shell32.dll (Version 4.0 oder höher) |