CMINVOKECOMMANDINFO 構造体 (shobjidl_core.h)
ショートカット メニュー コマンドを呼 び出すために IContextMenu::InvokeCommand に必要な情報が含まれています。
構文
typedef struct _CMINVOKECOMMANDINFO {
DWORD cbSize;
DWORD fMask;
HWND hwnd;
LPCSTR lpVerb;
LPCSTR lpParameters;
LPCSTR lpDirectory;
int nShow;
DWORD dwHotKey;
HANDLE hIcon;
} CMINVOKECOMMANDINFO;
メンバー
cbSize
型: DWORD
この構造体のサイズ (バイト単位)。
fMask
型: DWORD
0、または次のフラグの 1 つ以上。
CMIC_MASK_HOTKEY
dwHotKey メンバーは有効です。
CMIC_MASK_ICON
hIcon メンバーは有効です。 Windows Vista の時点では、このフラグは使用されません。
CMIC_MASK_FLAG_NO_UI
システムは、コマンドの実行中にユーザー・インターフェース要素 (エラー・メッセージなど) を表示できなくなります。
CMIC_MASK_NO_CONSOLE
ショートカット メニュー ハンドラーで新しいプロセスを作成する必要がある場合、通常は新しいコンソールが作成されます。 CMIC_MASK_NO_CONSOLE フラグを設定すると、新しいコンソールが作成されなくなります。
CMIC_MASK_FLAG_SEP_VDM
このフラグは、16 ビット Windows ベースのアプリケーションを参照する場合にのみ有効です。 設定されている場合、ショートカットが指すアプリケーションはプライベート Virtual DOS マシン (VDM) で実行されます。 「解説」を参照してください。
CMIC_MASK_ASYNCOK
DDE メッセージ交換が終了するまで待ってから、 を返します。
CMIC_MASK_NOASYNC
Windows Vista 以降。 IContextMenu::InvokeCommand の実装は同期する必要があり、完了する前に が返されません。 これは推奨されるため、このフラグを指定するアプリケーションを呼び出しても、呼び出す動詞の実装に慣れていない場合は、この要求が受け入れられます。
CMIC_MASK_SHIFT_DOWN
Shift キーが押されます。 動詞が呼び出されてから変更された可能性があるキーボードの現在の状態をポーリングする代わりに、これを使用します。
CMIC_MASK_CONTROL_DOWN
Ctrl キーが押されます。 動詞が呼び出されてから変更された可能性があるキーボードの現在の状態をポーリングする代わりに、これを使用します。
CMIC_MASK_FLAG_LOG_USAGE
IContextMenu::InvokeCommand の実装で、"最近使ったドキュメント" メニューなどの機能に対して呼び出される項目を追跡する必要がある可能性があることを示します。
CMIC_MASK_NOZONECHECKS
ゾーン チェックを実行しないでください。 このフラグを使用すると、 ShellExecuteEx はIAttachmentExecute によって配置されたゾーン チェックをバイパスできます。
hwnd
型: HWND
ショートカット メニューの所有者であるウィンドウへのハンドル。 拡張機能では、表示されるメッセージ ボックスまたはダイアログ ボックスの所有者として、このハンドルを使用することもできます。
lpVerb
種類: LPCSTR
実行するコマンドの言語に依存しない名前を指定する null で終わる文字列のアドレス。通常、このメンバーは、アプリケーションによってコマンドがアクティブ化されている場合の文字列です。 システムは、次のコマンド文字列に対して定義済みの定数値を提供します。
常時 | コマンド文字列 |
---|---|
CMDSTR_RUNAS | "RunAs" |
CMDSTR_PRINT | "印刷" |
CMDSTR_PREVIEW | "プレビュー" |
CMDSTR_OPEN | "開く" |
これは固定セットではありません。新しい正規動詞はコンテキスト メニュー ハンドラーによって作成でき、アプリケーションで呼び出すことができます。
正規動詞が存在し、メニュー ハンドラーが正規動詞を実装していない場合は、エラー コードを返して、次のハンドラーがこの動詞を処理できるようにする必要があります。 これを行わないと、 ShellExecute を含むシステムの機能が中断されます。
または、ポインターではなく、このパラメーターを MAKEINTRESOURCE(offset) にすることもできます。 ここで、offset は実行するコマンドのメニュー識別子オフセットです。実装では、 IS_INTRESOURCE マクロを使用して、この代替手段が使用されていることを検出できます。 シェルは、ユーザーがメニュー コマンドを選択するときに、この代替手段を使用します。
lpParameters
種類: LPCSTR
コマンドに渡されるパラメーターを含む省略可能な文字列。 この文字列の形式は、呼び出されるコマンドによって決まります。 シェル拡張機能によって挿入されたメニュー項目の場合、このメンバーは常に NULL です 。
lpDirectory
種類: LPCSTR
オプションの作業ディレクトリ名。 シェル拡張機能によって挿入されたメニュー項目の場合、このメンバーは常に NULL です 。
nShow
型: int
コマンドがウィンドウを表示するか、アプリケーションを起動した場合に ShowWindow 関数に渡すSW_値のセット。
dwHotKey
型: DWORD
コマンドによってアクティブ化されたすべてのアプリケーションに割り当てるオプションのキーボード ショートカット。 fMask パラメーターでCMIC_MASK_HOTKEYを指定しない場合、このメンバーは無視されます。
hIcon
型: HANDLE
コマンドによってアクティブ化されたすべてのアプリケーションに使用するアイコン。 fMask メンバーがCMIC_MASK_ICONを指定しない場合、このメンバーは無視されます。
解説
IContextMenu::InvokeCommand 宣言は pici パラメーターに CMINVOKECOMMANDINFO 構造体を指定しますが、CMINVOKECOMMANDINFOEX 構造体を受け入れることもできます。 このメソッドを実装する場合は、 cbSize を調べて、渡された構造体を確認する必要があります。
要件
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
Header | shobjidl_core.h (Shobjidl.h を含む) |