IFileOperation 接口 (shobjidl_core.h)
公开用于复制、移动、重命名、创建和删除 Shell 项的方法,以及提供进度和错误对话框的方法。 此接口替换 SHFileOperation 函数。
继承
IFileOperation 接口继承自 IUnknown 接口。 IFileOperation 还包含以下类型的成员:
方法
IFileOperation 接口具有以下方法。
注解
Shell 项可以是 命名空间中的任何对象,包括文件系统对象(如文件和文件夹),也可以是虚拟对象。 在 IFileOperation 方法主题中,术语“item”用于泛指任何命名空间对象。
与较旧的 SHFileOperation 函数比较,IFileOperation 具有许多优势。
- 使用 IShellItem 标识项,而不是字符串路径。 SHFileOperation 要求路径和目标字符串以两个 null 字符结尾,而不是标准单 null 字符,后者本身用于分隔字符串中的多个路径。 通过 IShellItem 识别项更可靠,也更不容易出现编程错误。 它还允许访问非文件系统项,例如虚拟文件夹。 一个操作中的多个项可以作为 IShellItemArray、 IDataObject 或通过 IEnumShellItems (而不是字符串)访问的集合传递。
- 通过 HRESULT 值与 FormatMessage 等 API 进行更准确的错误报告。 SHFileOperation 的返回代码可能具有误导性或不准确。
- 扩展性。 作为 COM) 接口 (组件对象模型, IFileOperation 可由第三方扩展其功能以满足其特定需求,尽管这种情况非常罕见。 Windows 提供 IFileOperation 的默认实现,应满足大多数用户的需求。
- 更好的进度反馈。 可以在操作期间收到详细的操作进度,包括特定操作开始和结束各个项时的通知,以及总体进度。 虽然 SHFileOperation 确实提供了进度 UI,但它没有那么详细。
- 更多功能。 除了 SHFileOperation 提供的复制、删除、移动和重命名功能外, IFileOperation 还允许应用属性值和创建新项。
- 对操作的更多控制。 除了 SHFileOperation 识别的操作标志外, IFileOperation::SetOperationFlags 中还识别指定扩展操作选项的新标志。
- 可以在一次调用中执行不同的操作。 例如,可以在一个操作中移动一组文件、复制其他文件、重命名文件夹,并将属性应用于另一个项目。 SHFileOperation 一次只能执行一项操作-复制、移动、重命名或删除。
- 可选。 通过 “建议 ”和“ 取消Advise”设置事件接收器,以获取进度状态和错误通知。
- 根据需要使用以下命令设置操作状态:
- 根据需要使用以下命令指定要对哪些项执行哪些操作。
- 通过调用 PerformOperations 执行操作
Windows 软件开发工具包 (Windows SDK) (SDK) 中包含一个演示 IFileOperation 扩展的完整示例。 在默认安装中,可以在 %ProgramFiles%\Microsoft SDKs\Windows\v6.0\Samples\WinUI\Shell\AppPlatform\FileOperations 中找到它。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | shobjidl_core.h (包括 Shobjidl.h) |