SHCreateShellItemArrayFromDataObject 函数 (shobjidl_core.h)

从数据对象创建 Shell 项数组对象。

语法

SHSTDAPI SHCreateShellItemArrayFromDataObject(
  [in]  IDataObject *pdo,
  [in]  REFIID      riid,
  [out] void        **ppv
);

参数

[in] pdo

类型: IDataObject*

指向 IDataObject 接口的 指针。

[in] riid

类型: REFIID

对所需接口 ID 的引用。

[out] ppv

类型: void**

此方法返回时,包含 riid 中请求的接口指针。 这通常是 IShellItemArray

返回值

类型: HRESULT

如果此函数成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。

注解

此函数适用于实现 IShellExtInit 并将数据对象传递给 IShellExtInit::Initialize 方法的 Shell 扩展;例如,上下文菜单处理程序。

此 API 允许将数据对象转换为处理程序可以使用的 Shell 项。 建议处理程序使用 Shell 项数组而不是剪贴板格式(如 CF_HDROPCFSTR_SHELLIDLIST ), (也称为 HIDA) ,因为它可以简化代码并允许一些性能改进。

生成的 shell 项数组包含对源数据对象的引用。 因此,该数据对象必须在 shell 项数组的生存期内保持有效。 值得注意的是,传递给 IDropTarget 方法的数据对象在删除操作完成后不再有效。

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 shobjidl_core.h (包括 Shobjidl.h)
DLL Shell32.dll
API 集 ext-ms-win-shell-shell32-l1-2-2 (在 Windows 10 版本 10.0.14393 中引入)