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) |