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

零个或多个以下标志。

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

仅当引用基于 Windows 的 16 位应用程序时,此标志才有效。 如果已设置,则快捷方式指向在专用虚拟 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 是要执行的命令的菜单标识符偏移量,而不是指针。实现可以使用 IS_INTRESOURCE 宏来检测是否使用了此替代项。 当用户选择菜单命令时,Shell 使用此替代项。

lpParameters

类型: LPCSTR

包含传递给命令的参数的可选字符串。 此字符串的格式由要调用的命令确定。 对于 Shell 扩展插入的菜单项,此成员始终为 NULL

lpDirectory

类型: LPCSTR

可选的工作目录名称。 对于 Shell 扩展插入的菜单项,此成员始终为 NULL

nShow

类型: int

一组SW_值,如果命令显示窗口或启动应用程序,则传递给 ShowWindow 函数。

dwHotKey

类型:DWORD

一个可选的键盘快捷方式,用于分配给由 命令激活的任何应用程序。 如果 fMask 参数未指定 CMIC_MASK_HOTKEY,则忽略此成员。

hIcon

类型: HANDLE

用于由 命令激活的任何应用程序的图标。 如果 fMask 成员未指定 CMIC_MASK_ICON,则忽略此成员。

注解

尽管 IContextMenu::InvokeCommand 声明为 pici 参数指定 CMINVOKECOMMANDINFO 结构,但它也可以接受 CMINVOKECOMMANDINFOEX 结构。 如果要实现此方法,则必须检查 cbSize 以确定已传递的结构。

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
标头 shobjidl_core.h (包括 Shobjidl.h)