IAssocHandler::CreateInvoker 方法 (shobjidl_core.h)

检索一个 对象,该对象允许对当前选定内容调用关联的处理程序。 调用程序包括验证当前选择是否受支持的功能。

语法

HRESULT CreateInvoker(
  [in]  IDataObject          *pdo,
  [out] IAssocHandlerInvoker **ppInvoker
);

参数

[in] pdo

类型: IDataObject*

指向 IDataObject 的指针,该指针表示要对其调用处理程序的一个或多个选定项。 请注意,如果只有单个项, 则 IAssocHandler::Invoke 可能是更好的选择。 有关更多详细信息,请参阅备注。

[out] ppInvoker

类型: IAssocHandlerInvoker**

此方法返回时,包含指向 IAssocHandlerInvoker 对象的指针的地址。 此对象用于在确保所选项受关联处理程序支持后调用菜单项。

返回值

类型: HRESULT

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

注解

IAssocHandler 对象通常用于填充 “打开方式 ”菜单。 选择其中一个菜单项时,将调用此方法以启动所选应用程序。

调用和 CreateInvoker

这些方法使用的 IDataObject 可以表示单个文件,也可以表示多个文件的选择。 并非所有应用程序都支持多个文件选项。 支持该方案的应用程序可能会施加其他限制,例如可以一次打开的文件数或可接受的文件类型组合。

因此,在尝试调用处理程序之前,应用程序通常必须确定处理程序是否支持选择。 例如,仅当应用程序知道有问题的选择受该处理程序支持时,才会启用菜单项。

通常可以放心地假设应用程序将支持对单个项的调用;在这些情况下,应用程序通常调用 IAssocHandler::Invoke

对于多种选择方案,应用程序应调用 IAssocHandler::CreateInvoker。 该方法检索 IAssocHandlerInvoker 对象,该对象允许调用应用程序首先检查支持选择 (SupportsSelection) ,然后调用处理程序 (Invoke) 。

可以在选择多个文件时调用 IAssocHandler::Invoke,但不建议这样做,因为所涉及的处理负载很大,并且不能保证成功。

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 shobjidl_core.h (包括 Shobjidl.h)

另请参阅

IAssocHandler

IAssocHandler::Invoke

IEnumAssocHandlers