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 構造体を使用する必要があります。実装者へのメモ
pici の cbSize メンバーを調べて、渡された構造体 (CMINVOKECOMMANDINFO または CMINVOKECOMMANDINFOEX) を確認します。 CMINVOKECOMMANDINFOEX 構造体で、fMask メンバーに CMIC_MASK_UNICODE フラグが設定されている場合、構造体の最後の 5 つのメンバーに含まれる Unicode 情報を使用するには、pici を CMINVOKECOMMANDINFOEX にキャストする必要があります。正規の動詞名またはコマンド 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 以降) |