IContextMenu::InvokeCommand 方法 (shobjidl_core.h)

执行与快捷菜单项关联的命令。

语法

HRESULT InvokeCommand(
  CMINVOKECOMMANDINFO *pici
);

参数

pici

类型: LPCMINVOKECOMMANDINFO

指向 CMINVOKECOMMANDINFOCMINVOKECOMMANDINFOEX 结构的指针,该结构包含有关命令的详细信息。

返回值

类型: HRESULT

如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。

注解

IContextMenu 接口由多个 Shell 扩展处理程序和命名空间扩展导出。 它用于将命令添加到快捷菜单。 当用户选择处理程序或命名空间扩展添加到快捷菜单的命令之一时,Shell 会调用该命令的 InvokeCommand 方法。 命令可以按其菜单标识符偏移量(在调用 IContextMenu::QueryContextMenu 时定义)或其关联的谓词来指定。 应用程序可以通过获取指向对象的 IContextMenu 接口的指针来直接调用此方法。 应用程序还可以通过调用 ShellExecute 或 ShellExecuteEx 并指定命名空间扩展或处理程序支持的谓词来间接调用此方法。

用户备注

尽管 pici 参数在 Shlobj.h 中声明为 CMINVOKECOMMANDINFO 结构,但可以使用 CMINVOKECOMMANDINFOCMINVOKECOMMANDINFOEX。 两者都适用于 ANSI 字符串,但您必须对 Unicode 字符串使用 CMINVOKECOMMANDINFOEX 结构。

实施者说明

检查 picicbSize 成员以确定传入了哪个结构 (CMINVOKECOMMANDINFOCMINVOKECOMMANDINFOEX) 。 如果它是 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 或更高版本)

另请参阅

IContextMenu