从数据对象创建 Shell 项数组对象。
Syntax
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 的 Shell 扩展,并将数据对象传递给 IShellExtInit::Initialize 方法;例如,上下文菜单处理程序。
使用此 API 可将数据对象转换为处理程序可以使用的 Shell 项。 建议处理程序使用 Shell 项数组,而不是剪贴板格式,如 CF_HDROP 和 CFSTR_SHELLIDLIST (也称为 HIDA),因为它会导致更简单的代码,并允许一些性能改进。
生成的 shell 项数组保存对源数据对象的引用。 因此,该数据对象在 shell 项数组的生存期内必须保持有效。 值得注意的是,传递到 IDropTarget 方法的数据对象在删除作完成后不再有效。
要求
| Requirement | 价值 |
|---|---|
| 最低支持的客户端 | Windows Vista [仅限桌面应用] |
| 支持的最低服务器 | Windows Server 2008 [仅限桌面应用] |
| 目标平台 | Windows操作系统 |
| Header | shobjidl_core.h (包括 Shobjidl.h) |
| Library | OneCore.Lib |
| DLL | Shell32.dll |
| API 集 | ext-ms-win-shell-shell32-l1-2-2 (在 Windows 10 版本 10.0.14393 中引入) |