描述
执行指定的命令或显示命令的帮助。
C++ 语法
HRESULT Exec( const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdExecOpt, VARIANTARG *pvaIn, VARIANTARG *pvaOut ); |
PowerBASIC 语法
METHOD Exec ( _ BYREF pguidCmdGroup AS GUID, _ BYVAL nCmdID AS DWORD, _ BYVAL nCmdExecOpt AS DWORD, _ BYREF pvaIn AS VARIANT, _ BYREF pvaOut AS VARIANT _ ) AS LONG |
参数
pguidCmdGroup |
[in]指向命令组唯一标识符的指针;可以为NULL指定标准组。 |
nCmdID |
[in]要执行的命令。此命令必须属于pguidCmdGroup指定的组。 |
nCmdExecOpt |
[in]从OLECMDEXECOPT枚举取得的值,描述对象应如何执行命令。 |
pvaIn |
[in]指向包含输入参数的VARIANT的指针。可以为NULL。 |
pvaOut |
[in,out]指向VARIANT以接收命令输出的指针。可以为NULL。 |
OBJRESULT
此方法支持标准返回值E_FAIL和E_UNEXPECTED,以及以下内容:
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的描述。)在没有任何特定信息的情况下,假定命令不接受任何参数,也没有返回值。
调用注意事项
pguidCmdGroup和nCmdID参数一起唯一标识要调用的命令。nCmdExecOpt参数指定要采取的确切操作。(有关详细信息,请参阅OLECMDEXECOPT枚举。)
大多数命令既不会引用参数也不返回值。对于这样的命令,调用者可以在pvaIn和pvaOut中传递NULL。对于期望一个或多个输入值的命令,调用者可以声明和初始化VARIANT变量,并将指针传递给pvaIn中的该变量。如果命令的输入是单个值,则该参数可以直接存储在VARIANT中并传递给该函数。如果命令需要多个参数,则必须使用其中一种支持的类型(例如IDispatch或SAFEARRAY)在VARIANT内正确打包这些参数。
如果命令返回一个或多个参数,则呼叫者将声明一个VARIANT,将其初始化为VT_EMPTY,并将其地址传递给pvaOut.如果命令返回单个值,则对象可以直接在pvaOut中存储该值。如果命令有多个输出值,那么它将以某种方式对VARIANT进行打包。
因为pvaIn和pvOut都是调用者分配的,所以对于接收到调用的调用者和对象都允许使用堆栈变量。对于在输入上取零或一个参数并返回零或一个值的命令,不需要额外的内存分配。VARIANT支持的大多数类型不需要内存分配。例外包括SAFEARRAY和BSTR.


