IContextMenu::InvokeCommand メソッド (shobjidl_core.h)

ショートカット メニュー項目に関連付けられているコマンドを実行します。

構文

HRESULT InvokeCommand(
  CMINVOKECOMMANDINFO *pici
);

パラメーター

pici

種類: LPCMINVOKECOMMANDINFO

コマンドに関する詳細を含む CMINVOKECOMMANDINFO または CMINVOKECOMMANDINFOEX 構造体へのポインター。

戻り値

種類: HRESULT

このメソッドは、成功すると S_OK を返します。 そうでない場合は、HRESULT エラー コードを返します。

注釈

IContextMenu インターフェイスは、いくつかのシェル拡張ハンドラーと名前空間拡張によってエクスポートされます。 ショートカット メニューにコマンドを追加するために使用されます。 ユーザーが、ハンドラーまたは名前空間拡張機能がショートカット メニューに追加したコマンドのいずれかを選択すると、シェルはそのコマンドの InvokeCommand メソッドを呼び出します。 コマンドは、メニュー識別子オフセット、 IContextMenu::QueryContextMenu が 呼び出されたときに定義される、または関連付けられた動詞によって指定できます。 アプリケーションは、オブジェクトの IContextMenu インターフェイスへのポインターを取得することで、このメソッドを直接呼び出すことができます。 アプリケーションは、 ShellExecute または ShellExecuteEx を呼び出し、名前空間拡張機能またはハンドラーでサポートされている動詞を指定することで、このメソッドを間接的に呼び出すこともできます。

ユーザーへのメモ

pici パラメーターは Shlobj.h で CMINVOKECOMMANDINFO 構造体として宣言されていますが、CMINVOKECOMMANDINFO または CMINVOKECOMMANDINFOEX を使用できます。 ANSI 文字列ではどちらでも機能しますが、Unicode 文字列には CMINVOKECOMMANDINFOEX 構造体を使用する必要があります。

実装者へのメモ

picicbSize メンバーを調べて、渡された構造体 (CMINVOKECOMMANDINFO または CMINVOKECOMMANDINFOEX) を確認します。 CMINVOKECOMMANDINFOEX 構造体で、fMask メンバーに CMIC_MASK_UNICODE フラグが設定されている場合、構造体の最後の 5 つのメンバーに含まれる Unicode 情報を使用するには、piciCMINVOKECOMMANDINFOEX にキャストする必要があります。

正規の動詞名またはコマンド ID で指定された動詞がコンテキスト メニュー ハンドラーによって認識されない場合は、エラー (E_FAIL) を返して、動詞を実装する可能性のある他のコンテキスト メニュー ハンドラーに渡すことができるようにする必要があります。

Windows Vista では、CMINVOKECOMMANDINFO または CMINVOKECOMMANDINFOEX 構造体の fMask メンバーに CMIC_MASK_ASYNCOK フラグを設定するだけでは、コマンドを非同期的に呼び出すだけでは十分ではありません。 「スレッド参照の管理」で説明されているように、呼び出し元のスレッドに スレッド参照を設定する必要もあります

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー shobjidl_core.h (Shobjidl.h を含む)
[DLL] Shell32.dll (バージョン 4.0 以降)

こちらもご覧ください

IContextMenu