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 結構中,並傳遞至函式。 如果命令需要多個引數,則必須在 VARIANTARG 內適當地封裝這些引數,並使用其中一種支援的類型 (,例如 IDispatch 或 SAFEARRAY) 。
如果命令傳回一或多個引數,則呼叫端應該宣告 VARIANTARG、將它初始化為VT_EMPTY,並在 pvaOut 中傳遞其位址。 如果命令傳回單一值,則物件可以直接將該值儲存在 pvaOut 中。 如果命令有多個輸出值,則會以適合 VARIANTARG 的某種方式封裝這些值。
因為 pvaIn 和 pvOut 都是呼叫端配置的,所以呼叫端和接收呼叫的物件都允許堆疊變數。 對於在輸入上採用零或一個引數並傳回零或一個值的命令,不需要額外的記憶體配置。 VARIANTARG 支援的大部分類型不需要記憶體配置。 例外狀況包括 SAFEARRAY 和 BSTR。
實作者的注意事項
命令目標必須實作此函式;E_NOTIMPL不是有效的傳回值。需求
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | docobj.h |