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を返します。 その他の可能な戻り値は次のとおりです。

リターン コード 説明
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 列挙を参照してください)。

ほとんどのコマンドは引数を受け取らず、値を返しません。 このようなコマンドの場合、呼び出し元はpvaInpvaOutNULL を渡すことができます。 1 つ以上の入力値を必要とするコマンドの場合、呼び出し元は VARIANTARG 変数を宣言して初期化し、その変数へのポインターをpvaInで渡すことができます。 コマンドへの入力が 1 つの値である場合、引数を VARIANTARG 構造体に直接格納し、関数に渡すことができます。 コマンドで複数の引数が必要な場合は、サポートされている型 ( IDispatchSAFEARRAY など) のいずれかを使用して、これらの引数を VARIANTARG 内に適切にパッケージ化する必要があります。

コマンドが 1 つ以上の引数を返す場合、呼び出し元は VARIANTARG を宣言し、それをVT_EMPTYに初期化し、そのアドレスをpvaOutに渡すことが期待されます。 コマンドが 1 つの値を返す場合、オブジェクトはその値を直接pvaOutに格納できます。 コマンドに複数の出力値がある場合は、VARIANTARG に適した何らかの方法でパッケージ化されます。

pvinpvOut は両方とも呼び出し元によって割り当てられるため、呼び出し元と呼び出しを受け取るオブジェクトの両方に対してスタック変数が許可されます。 入力で 0 個または 1 個の引数を受け取り、0 個または 1 個の値を返すコマンドの場合、追加のメモリ割り当ては必要ありません。 VARIANTARG でサポートされる型のほとんどは、メモリ割り当てを必要としません。 例外には 、SAFEARRAYBSTR が含まれます。

実装者へのメモ

コマンド ターゲットはこの関数を実装する必要があります。E_NOTIMPLは有効な戻り値ではありません。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー docobj.h

関連項目

IOleCommandTarget

OLECMDEXECOPT