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 |
---|---|
|
El parámetro pguidCmdGroup no es NULL , pero no especifica un grupo de comandos reconocido. |
|
El parámetro nCmdID no es un comando válido en el grupo identificado por pguidCmdGroup. |
|
El comando identificado por nCmdID está deshabilitado actualmente y no se puede ejecutar. |
|
El autor de la llamada ha solicitado ayuda sobre el comando identificado por nCmdID, pero no hay ayuda disponible. |
|
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 |