IContextMenu::InvokeCommand 方法 (shobjidl_core.h)
执行与快捷菜单项关联的命令。
语法
HRESULT InvokeCommand(
CMINVOKECOMMANDINFO *pici
);
参数
pici
类型: LPCMINVOKECOMMANDINFO
指向 CMINVOKECOMMANDINFO 或 CMINVOKECOMMANDINFOEX 结构的指针,该结构包含有关命令的详细信息。
返回值
类型: HRESULT
如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。
注解
IContextMenu 接口由多个 Shell 扩展处理程序和命名空间扩展导出。 它用于将命令添加到快捷菜单。 当用户选择处理程序或命名空间扩展添加到快捷菜单的命令之一时,Shell 会调用该命令的 InvokeCommand 方法。 命令可以按其菜单标识符偏移量(在调用 IContextMenu::QueryContextMenu 时定义)或其关联的谓词来指定。 应用程序可以通过获取指向对象的 IContextMenu 接口的指针来直接调用此方法。 应用程序还可以通过调用 ShellExecute 或 ShellExecuteEx 并指定命名空间扩展或处理程序支持的谓词来间接调用此方法。
用户备注
尽管 pici 参数在 Shlobj.h 中声明为 CMINVOKECOMMANDINFO 结构,但可以使用 CMINVOKECOMMANDINFO 或 CMINVOKECOMMANDINFOEX。 两者都适用于 ANSI 字符串,但您必须对 Unicode 字符串使用 CMINVOKECOMMANDINFOEX 结构。实施者说明
检查 pici 的 cbSize 成员以确定传入了哪个结构 (CMINVOKECOMMANDINFO 或 CMINVOKECOMMANDINFOEX) 。 如果它是 CMINVOKECOMMANDINFOEX 结构,并且 fMask 成员设置了 CMIC_MASK_UNICODE 标志,则必须将 pici 强制转换为 CMINVOKECOMMANDINFOEX ,才能使用结构的最后五个成员中包含的 Unicode 信息。如果上下文菜单处理程序无法识别由规范谓词名称或命令 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 或更高版本) |