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 結構中,並傳遞至函式。 如果命令需要多個引數,則必須在 VARIANTARG 內適當地封裝這些引數,並使用其中一種支援的類型 (,例如 IDispatchSAFEARRAY) 。

如果命令傳回一或多個引數,則呼叫端應該宣告 VARIANTARG、將它初始化為VT_EMPTY,並在 pvaOut 中傳遞其位址。 如果命令傳回單一值,則物件可以直接將該值儲存在 pvaOut 中。 如果命令有多個輸出值,則會以適合 VARIANTARG 的某種方式封裝這些值。

因為 pvaInpvOut 都是呼叫端配置的,所以呼叫端和接收呼叫的物件都允許堆疊變數。 對於在輸入上採用零或一個引數並傳回零或一個值的命令,不需要額外的記憶體配置。 VARIANTARG 支援的大部分類型不需要記憶體配置。 例外狀況包括 SAFEARRAYBSTR

實作者的注意事項

命令目標必須實作此函式;E_NOTIMPL不是有效的傳回值。

需求

   
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 docobj.h

另請參閱

IOleCommandTarget

OLECMDEXECOPT