IOleCommandTarget::Exec 方法 (docobj.h)

执行指定的命令或显示命令的帮助。

语法

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

参数

[in] pguidCmdGroup

命令组的唯一标识符;可以为 NULL 以指定标准组。

[in] nCmdID

要执行的命令。 此命令必须属于使用 pguidCmdGroup 指定的组。

[in] nCmdexecopt

指定该对象应如何执行该命令。 可能的值取自 OLECMDEXECOPTOLECMDID_WINDOWSTATE_FLAG 枚举。

[in] pvaIn

指向包含输入参数的 VARIANTARG 结构的指针。 此参数可以为 NULL。

[in, out] pvaOut

指向用于接收命令输出的 VARIANTARG 结构的指针。 此参数可以为 NULL。

返回值

此方法在成功时返回S_OK。 其他可能的返回值包括以下内容。

返回代码 说明
OLECMDERR_E_UNKNOWNGROUP
pguidCmdGroup 参数不是 NULL,但未指定已识别的命令组。
OLECMDERR_E_NOTSUPPORTED
nCmdID 参数不是 pguidCmdGroup 标识的组中的有效命令。
OLECMDERR_E_DISABLED
nCmdID 标识的命令当前处于禁用状态,无法执行。
OLECMDERR_E_NOHELP
调用方已请求有关 nCmdID 标识的命令的帮助,但没有可用的帮助。
OLECMDERR_E_CANCELED
用户取消了命令的执行。

备注

命令的输入和输出参数列表及其打包方式对于每个命令都是唯一的。 此类信息应与命令组的规范一起记录。 (请参阅 OLECMDID 枚举中OLECMDID_ZOOM的说明。) 如果没有任何特定信息,则假定命令不采用任何参数且没有返回值。

给调用方的说明

pguidCmdGroupnCmdID 参数共同唯一标识要调用的命令。 nCmdExecOpt 参数指定要执行的确切操作。 (有关详细信息,请参阅 OLECMDEXECOPT 枚举。)

大多数命令既不采用参数也不返回值。 对于此类命令,调用方可以在 pvaInpvaOut 中传递 NULL。 对于需要一个或多个输入值的命令,调用方可以声明和初始化 VARIANTARG 变量,并在 pvaIn 中传递指向该变量的指针。 如果命令的输入是单个值,则参数可以直接存储在 VARIANTARG 结构中,并将其传递给 函数。 如果命令需要多个参数,则必须使用支持的类型之一 ((如 IDispatchSAFEARRAY) )在 VARIANTARG 中适当打包这些参数。

如果命令返回一个或多个参数,则调用方应声明 VARIANTARG,将其初始化为VT_EMPTY,并在 pvaOut 中传递其地址。 如果命令返回单个值,则对象可以直接将该值存储在 pvaOut 中。 如果命令具有多个输出值,则它会以适合 VARIANTARG 的某种方式打包这些值。

由于 pvaInpvOut 都是调用方分配的,因此允许调用方和接收调用的对象使用堆栈变量。 对于在输入上采用零个或一个参数并返回零个值或一个值的命令,无需额外的内存分配。 VARIANTARG 支持的大多数类型不需要内存分配。 例外包括 SAFEARRAYBSTR

实施者说明

命令目标必须实现此函数;E_NOTIMPL 不是有效的返回值。

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 docobj.h

另请参阅

IOleCommandTarget

OLECMDEXECOPT