Método IOleCommandTarget::Exec (docobj.h)

Ejecuta el comando especificado o muestra ayuda para el comando.

Sintaxis

HRESULT Exec(
  [in]      const GUID *pguidCmdGroup,
  [in]      DWORD      nCmdID,
  [in]      DWORD      nCmdexecopt,
  [in]      VARIANT    *pvaIn,
  [in, out] VARIANT    *pvaOut
);

Parámetros

[in] pguidCmdGroup

Identificador único del grupo de comandos; puede ser NULL para especificar el grupo estándar.

[in] nCmdID

Comando que se va a ejecutar. Este comando debe pertenecer al grupo especificado con pguidCmdGroup.

[in] nCmdexecopt

Especifica la forma en que el objeto debe ejecutar el comando. Los valores posibles se toman de las enumeraciones OLECMDEXECOPT y OLECMDID_WINDOWSTATE_FLAG .

[in] pvaIn

Puntero a una estructura VARIANTARG que contiene argumentos de entrada. Este parámetro puede ser NULL.

[in, out] pvaOut

Puntero a una estructura VARIANTARG para recibir la salida del comando. Este parámetro puede ser NULL.

Valor devuelto

Este método devuelve S_OK cuando funciona correctamente. Otros posibles valores devueltos son los siguientes.

Código devuelto Descripción
OLECMDERR_E_UNKNOWNGROUP
El parámetro pguidCmdGroup no es NULL , pero no especifica un grupo de comandos reconocido.
OLECMDERR_E_NOTSUPPORTED
El parámetro nCmdID no es un comando válido en el grupo identificado por pguidCmdGroup.
OLECMDERR_E_DISABLED
El comando identificado por nCmdID está deshabilitado actualmente y no se puede ejecutar.
OLECMDERR_E_NOHELP
El autor de la llamada ha solicitado ayuda sobre el comando identificado por nCmdID, pero no hay ayuda disponible.
OLECMDERR_E_CANCELED
El usuario canceló la ejecución del comando.

Comentarios

La lista de argumentos de entrada y salida de un comando y cómo se empaquetan es único para cada comando. Dicha información debe documentarse con la especificación del grupo de comandos. (Vea la descripción de OLECMDID_ZOOM en la enumeración OLECMDID ). En ausencia de cualquier información específica, se supone que el comando no toma ningún argumento y no tiene ningún valor devuelto.

Notas a los autores de llamadas

Los parámetros pguidCmdGroup y nCmdID identifican de forma única el comando que se va a invocar. El parámetro nCmdExecOpt especifica la acción exacta que se va a realizar. (Consulte la enumeración OLECMDEXECOPT para obtener más detalles).

La mayoría de los comandos no toman argumentos ni valores devueltos. Para estos comandos, el llamador puede pasar NULL en pvaIn y pvaOut. En el caso de los comandos que esperan uno o varios valores de entrada, el autor de la llamada puede declarar e inicializar una variable VARIANTARG y pasar un puntero a esa variable en pvaIn. Si la entrada del comando es un valor único, el argumento se puede almacenar directamente en la estructura VARIANTARG y pasarse a la función . Si el comando espera varios argumentos, esos argumentos se deben empaquetar correctamente en VARIANTARG, mediante uno de los tipos admitidos (como IDispatch o SAFEARRAY).

Si un comando devuelve uno o varios argumentos, se espera que el autor de la llamada declare un VARIANTARG, inicialícelo en VT_EMPTY y pase su dirección en pvaOut. Si el comando devuelve un valor único, el objeto puede almacenar ese valor directamente en pvaOut. Si el comando tiene varios valores de salida, empaquetará los de alguna manera apropiados para VARIANTARG.

Dado que pvaIn y pvOut están asignados al autor de la llamada, se permiten variables de pila tanto para el autor de la llamada como para el objeto que recibe la llamada. En el caso de los comandos que toman cero o un argumento en la entrada y devuelven cero o un valor, no se necesita ninguna asignación de memoria adicional. La mayoría de los tipos admitidos por VARIANTARG no requieren asignación de memoria. Las excepciones incluyen SAFEARRAY y BSTR.

Notas para los implementadores

Un destino de comando debe implementar esta función; E_NOTIMPL no es un valor devuelto válido.

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado docobj.h

Consulte también

IOleCommandTarget

OLECMDEXECOPT