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
指定该对象应如何执行该命令。 可能的值取自 OLECMDEXECOPT 和 OLECMDID_WINDOWSTATE_FLAG 枚举。
[in] pvaIn
指向包含输入参数的 VARIANTARG 结构的指针。 此参数可以为 NULL。
[in, out] pvaOut
指向用于接收命令输出的 VARIANTARG 结构的指针。 此参数可以为 NULL。
返回值
此方法在成功时返回S_OK。 其他可能的返回值包括以下内容。
返回代码 | 说明 |
---|---|
|
pguidCmdGroup 参数不是 NULL,但未指定已识别的命令组。 |
|
nCmdID 参数不是 pguidCmdGroup 标识的组中的有效命令。 |
|
nCmdID 标识的命令当前处于禁用状态,无法执行。 |
|
调用方已请求有关 nCmdID 标识的命令的帮助,但没有可用的帮助。 |
|
用户取消了命令的执行。 |
备注
命令的输入和输出参数列表及其打包方式对于每个命令都是唯一的。 此类信息应与命令组的规范一起记录。 (请参阅 OLECMDID 枚举中OLECMDID_ZOOM的说明。) 如果没有任何特定信息,则假定命令不采用任何参数且没有返回值。
给调用方的说明
pguidCmdGroup 和 nCmdID 参数共同唯一标识要调用的命令。 nCmdExecOpt 参数指定要执行的确切操作。 (有关详细信息,请参阅 OLECMDEXECOPT 枚举。)大多数命令既不采用参数也不返回值。 对于此类命令,调用方可以在 pvaIn 和 pvaOut 中传递 NULL。 对于需要一个或多个输入值的命令,调用方可以声明和初始化 VARIANTARG 变量,并在 pvaIn 中传递指向该变量的指针。 如果命令的输入是单个值,则参数可以直接存储在 VARIANTARG 结构中,并将其传递给 函数。 如果命令需要多个参数,则必须使用支持的类型之一 ((如 IDispatch 或 SAFEARRAY) )在 VARIANTARG 中适当打包这些参数。
如果命令返回一个或多个参数,则调用方应声明 VARIANTARG,将其初始化为VT_EMPTY,并在 pvaOut 中传递其地址。 如果命令返回单个值,则对象可以直接将该值存储在 pvaOut 中。 如果命令具有多个输出值,则它会以适合 VARIANTARG 的某种方式打包这些值。
由于 pvaIn 和 pvOut 都是调用方分配的,因此允许调用方和接收调用的对象使用堆栈变量。 对于在输入上采用零个或一个参数并返回零个值或一个值的命令,无需额外的内存分配。 VARIANTARG 支持的大多数类型不需要内存分配。 例外包括 SAFEARRAY 和 BSTR。
实施者说明
命令目标必须实现此函数;E_NOTIMPL 不是有效的返回值。要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | docobj.h |