【发布时间】:2016-07-12 10:36:02
【问题描述】:
Windows 资源管理器在复制时重命名文件并找到现有文件 - 我们是否可以从 Delphi 代码访问该工具?
使用TFile.Copy() 时,编写代码来重命名目标文件名相当简单,但如果可用的话,最好使用现有代码。
【问题讨论】:
-
你应该试试shell函数来复制文件。
Windows 资源管理器在复制时重命名文件并找到现有文件 - 我们是否可以从 Delphi 代码访问该工具?
使用TFile.Copy() 时,编写代码来重命名目标文件名相当简单,但如果可用的话,最好使用现有代码。
【问题讨论】:
IFileOperation 是 shell 文件复制功能的 API。使用它来复制 shell 的行为。在您的情况下,您将需要使用 SetOperationFlags 来指定 FOF_RENAMEONCOLLISION 标志:
如果具有目标名称的项目已存在,则在移动、复制或重命名操作中为正在操作的项目指定一个新名称。
【讨论】:
IFileOperation 仅适用于 Vista+。在 XP 和更早版本上,请改用 SHFileOperation()。它还有一个FOF_RENAMEONCOLLISION 标志。