windows 我可以对虚拟文件(IStream)使用IFileOperation吗?

ffscu2ro  于 2023-02-16  发布在  Windows
关注(0)|答案(1)|浏览(159)

我正在尝试从网络流复制文件到本地磁盘(使用C#)。我想使用IFileOperation接口来获得现代复制UI,但我不知道如何为尚不存在的文件获得IShellItem
目前我使用的是旧的IOperationsProgressDialog,它确实可以工作,但是我希望Shell处理要求用户覆盖文件、权限问题等。
如何从IStream创建IShellItem以在IFileOperation::Copy()中使用?

l3zydbqr

l3zydbqr1#

您必须使用IBindCtx参数来传递额外的数据给解析器,在本例中是您自己的文件元数据,因此SHParseDisplayName()不会尝试访问真实的的文件来获取元数据。
指向绑定上下文的指针,绑定上下文用于将参数作为输入和输出传递给分析函数。这些传递的参数通常特定于数据源,并由数据源所有者记录。**例如,文件系统数据源接受正在分析的名称(作为WIN32_FIND_DATA结构),使用STR_FILE_SYS_BIND_DATA绑定上下文参数。**可以传递STR_PARSE_PREFER_FOLDER_BROWSING以指示在可能的情况下使用文件系统数据源解析URL。使用CreateBindCtx构造绑定上下文对象,并使用IBindCtx::RegisterObjectParam填充值。有关这些对象的完整列表,请参见Bind Context String Keys
并在MSDN“Old New Thing”博客上详细概述:
Creating a simple pidl: For the times you care enough to send the very fake🕗

相关问题