IFileOperation 接口 (shobjidl_core.h)

公开用于复制、移动、重命名、创建和删除 Shell 项的方法,以及提供进度和错误对话框的方法。 此接口替换 SHFileOperation 函数。

继承

IFileOperation 接口继承自 IUnknown 接口。 IFileOperation 还包含以下类型的成员:

方法

IFileOperation 接口具有以下方法。

 
IFileOperation::Advise

使处理程序能够为所有操作提供状态和错误信息。
IFileOperation::ApplyPropertiesToItem

声明要设置其属性值的单个项。
IFileOperation::ApplyPropertiesToItems

声明一组要为其应用一组通用属性值的项。
IFileOperation::CopyItem

声明要复制到指定目标的单个项。
IFileOperation::CopyItems

声明一组要复制到指定目标的项。
IFileOperation::D eleteItem

声明要删除的单个项。
IFileOperation::D eleteItems

声明一组要删除的项。
IFileOperation::GetAnyOperationsAborted

获取一个值,该值指示调用 IFileOperation::P erformOperations 启动的任何文件操作在完成之前是否已停止。 可以通过用户操作或系统以无提示方式停止操作。
IFileOperation::MoveItem

声明要移动到指定目标的单个项。
IFileOperation::MoveItems

声明要移动到指定目标的一组项。
IFileOperation::NewItem

声明将在指定位置创建的新项。
IFileOperation::P erformOperations

执行所有选定的操作。
IFileOperation::RenameItem

声明一个要赋予新显示名称的项。
IFileOperation::RenameItems

声明一组要赋予新显示名称的项。 所有项的名称都相同。
IFileOperation::SetOperationFlags

设置当前操作的参数。
IFileOperation::SetOwnerWindow

设置进度窗口和对话框窗口的父窗口或所有者窗口。
IFileOperation::SetProgressDialog

指定用于显示操作进度的对话框。
IFileOperation::SetProgressMessage

未实现。 (IFileOperation.SetProgressMessage)
IFileOperation::SetProperties

声明一组要对一个或多个项设置的属性和值。
IFileOperation::Unadvise

终止以前通过 IFileOperation::Advise 建立的咨询连接。

注解

Shell 项可以是 命名空间中的任何对象,包括文件系统对象(如文件和文件夹),也可以是虚拟对象。 在 IFileOperation 方法主题中,术语“item”用于泛指任何命名空间对象。

与较旧的 SHFileOperation 函数比较,IFileOperation 具有许多优势。

  • 使用 IShellItem 标识项,而不是字符串路径。 SHFileOperation 要求路径和目标字符串以两个 null 字符结尾,而不是标准单 null 字符,后者本身用于分隔字符串中的多个路径。 通过 IShellItem 识别项更可靠,也更不容易出现编程错误。 它还允许访问非文件系统项,例如虚拟文件夹。 一个操作中的多个项可以作为 IShellItemArrayIDataObject 或通过 IEnumShellItems (而不是字符串)访问的集合传递。
  • 通过 HRESULT 值与 FormatMessage 等 API 进行更准确的错误报告。 SHFileOperation 的返回代码可能具有误导性或不准确。
  • 扩展性。 作为 COM) 接口 (组件对象模型, IFileOperation 可由第三方扩展其功能以满足其特定需求,尽管这种情况非常罕见。 Windows 提供 IFileOperation 的默认实现,应满足大多数用户的需求。
  • 更好的进度反馈。 可以在操作期间收到详细的操作进度,包括特定操作开始和结束各个项时的通知,以及总体进度。 虽然 SHFileOperation 确实提供了进度 UI,但它没有那么详细。
  • 更多功能。 除了 SHFileOperation 提供的复制、删除、移动和重命名功能外, IFileOperation 还允许应用属性值和创建新项。
  • 对操作的更多控制。 除了 SHFileOperation 识别的操作标志外, IFileOperation::SetOperationFlags 中还识别指定扩展操作选项的新标志。
  • 可以在一次调用中执行不同的操作。 例如,可以在一个操作中移动一组文件、复制其他文件、重命名文件夹,并将属性应用于另一个项目。 SHFileOperation 一次只能执行一项操作-复制、移动、重命名或删除。
若要使用此接口完成文件操作,必须进行一系列调用。
  1. 可选。 通过 “建议 ”和“ 取消Advise”设置事件接收器,以获取进度状态和错误通知。
  2. 根据需要使用以下命令设置操作状态:
  3. 根据需要使用以下命令指定要对哪些项执行哪些操作。
  4. 通过调用 PerformOperations 执行操作
IFileOperation 只能在单线程单元中应用, (STA) 情况。 它不能用于多线程公寓 (MTA) 情况。 对于 MTA,仍必须使用 SHFileOperation

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)