Partager via


Méthode IContextMenu ::InvokeCommand (shobjidl_core.h)

Exécute la commande associée à un élément de menu contextuel.

Syntaxe

HRESULT InvokeCommand(
  CMINVOKECOMMANDINFO *pici
);

Paramètres

pici

Type : LPCMINVOKECOMMANDINFO

Pointeur vers une structure CMINVOKECOMMANDINFO ou CMINVOKECOMMANDINFOEX qui contient des détails sur la commande.

Valeur retournée

Type : HRESULT

Si cette méthode réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT.

Remarques

L’interface IContextMenu est exportée par plusieurs gestionnaires d’extensions Shell et extensions d’espace de noms. Il est utilisé pour ajouter des commandes aux menus contextuels. Lorsque l’utilisateur sélectionne l’une des commandes que le gestionnaire ou l’extension d’espace de noms a ajoutées à un menu contextuel, l’interpréteur de commandes appelle la méthode InvokeCommand de cette commande. La commande peut être spécifiée par son décalage d’identificateur de menu, défini lorsque IContextMenu ::QueryContextMenu a été appelé, ou par son verbe associé. Une application peut appeler cette méthode directement en obtenant un pointeur vers l’interface IContextMenu d’un objet. Une application peut également appeler cette méthode indirectement en appelant ShellExecute ou ShellExecuteEx et en spécifiant un verbe pris en charge par l’extension ou le gestionnaire d’espace de noms.

Remarque aux utilisateurs

Bien que le paramètre pici soit déclaré dans Shlobj.h en tant que structure CMINVOKECOMMANDINFO , vous pouvez utiliser CMINVOKECOMMANDINFO ou CMINVOKECOMMANDINFOEX. L’une ou l’autre fonctionne pour les chaînes ANSI, mais vous devez utiliser une structure CMINVOKECOMMANDINFOEX pour les chaînes Unicode.

Remarques aux implémenteurs

Vérifiez le membre cbSize de pici pour déterminer quelle structure (CMINVOKECOMMANDINFO ou CMINVOKECOMMANDINFOEX) a été passée. S’il s’agit d’une structure CMINVOKECOMMANDINFOEX et que le membre fMask a l’indicateur CMIC_MASK_UNICODE défini, vous devez caster pici en CMINVOKECOMMANDINFOEX pour utiliser les informations Unicode contenues dans les cinq derniers membres de la structure.

Si le verbe, spécifié par un nom de verbe canonique ou par l’ID de commande n’est pas reconnu par le gestionnaire de menu contextuel, il doit retourner un échec (E_FAIL) afin que le verbe puisse être transmis à d’autres gestionnaires de menus contextuels susceptibles de l’implémenter.

À partir de Windows Vista, il ne suffit pas d’appeler la commande de manière asynchrone en définissant simplement l’indicateur CMIC_MASK_ASYNCOK dans le membre fMask de la structure CMINVOKECOMMANDINFO ou CMINVOKECOMMANDINFOEX . Vous devez également définir une référence de thread sur le thread appelant, comme expliqué dans Gestion des références de thread.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête shobjidl_core.h (incluez Shobjidl.h)
DLL Shell32.dll (version 4.0 ou ultérieure)

Voir aussi

IContextMenu