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

Lleva a cabo el comando asociado a un elemento de menú contextual.

Sintaxis

HRESULT InvokeCommand(
  CMINVOKECOMMANDINFO *pici
);

Parámetros

pici

Tipo: LPCMINVOKECOMMANDINFO

Puntero a una estructura CMINVOKECOMMANDINFO o CMINVOKECOMMANDINFOEX que contiene detalles sobre el comando.

Valor devuelto

Tipo: HRESULT

Si este método se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.

Comentarios

La interfaz IContextMenu se exporta mediante varios controladores de extensión de Shell y extensiones de espacio de nombres. Se usa para agregar comandos a los menús contextuales. Cuando el usuario selecciona uno de los comandos que el controlador o la extensión de espacio de nombres agrega a un menú contextual, el Shell llama al método InvokeCommand del comando. El comando se puede especificar mediante su desplazamiento del identificador de menú, definido cuando se llamó a IContextMenu::QueryContextMenu o por su verbo asociado. Una aplicación puede invocar este método directamente obteniendo un puntero a la interfaz IContextMenu de un objeto. Una aplicación también puede invocar este método indirectamente llamando a ShellExecute o ShellExecuteEx y especificando un verbo compatible con la extensión o el controlador del espacio de nombres.

Nota para los usuarios

Aunque el parámetro pici se declara en Shlobj.h como una estructura CMINVOKECOMMANDINFO , puede usar CMINVOKECOMMANDINFO o CMINVOKECOMMANDINFOEX. Ambas funcionarán para cadenas ANSI, pero debe usar una estructura CMINVOKECOMMANDINFOEX para cadenas Unicode.

Notas para los implementadores

Compruebe el miembro cbSize de pici para determinar en qué estructura (CMINVOKECOMMANDINFO o CMINVOKECOMMANDINFOEX) se pasó. Si es una estructura CMINVOKECOMMANDINFOEX y el miembro fMask tiene establecida la marca CMIC_MASK_UNICODE , debe convertir pici a CMINVOKECOMMANDINFOEX para usar la información Unicode contenida en los cinco últimos miembros de la estructura.

Si el verbo, especificado por un nombre de verbo canónico o el identificador de comando no lo reconoce el controlador de menú contextual, debe devolver un error (E_FAIL) para que el verbo pueda pasarse a otros controladores de menú contextual que puedan implementarlo.

A partir de Windows Vista, no es suficiente invocar el comando de forma asincrónica simplemente estableciendo la marca CMIC_MASK_ASYNCOK en el miembro fMask de la estructura CMINVOKECOMMANDINFOINFO o CMINVOKECOMMANDINFOEX . También debe establecer una referencia de subproceso en el subproceso que realiza la llamada, como se explica en Administración de referencias de subprocesos.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado shobjidl_core.h (include Shobjidl.h)
Archivo DLL Shell32.dll (versión 4.0 o posterior)

Consulte también

IContextMenu