【发布时间】:2013-11-05 16:14:29
【问题描述】:
我在堆栈上找到了使用 SHFILEOPERATION 删除指定目录中的所有文件的示例代码,效果很好。我唯一的问题是它删除了进程中的目标目录。如果在 TSHFILEOpStruct 中为 pfrom 指定的目录在它包含的所有文件被删除后仍然存在,我会更喜欢它。
我认为通过设置 FOF_FILESONLY 标志它只会删除文件,但也许我错过了一些东西。
我将 TSHFILEOpStruct 设置为以下内容:
FillChar(FileOp, SizeOf(fileOp), 0);
FileOp.wFunc := FO_DELETE;
FileOp.pFrom := PChar(DirName+#0); //Target directory string needs to be Double Null Terminated
FileOp.fFlags := FOF_FILESONLY or FOF_NOCONFIRMATION or FOF_SILENT or FOF_NOERRORUI;
SHFileOperation(FileOp);
有没有那么设置 TSHFILEOpStruct 来完成这个?
另外,我使用的是 Delphi 2007,我无法访问 MSDN 文档中提到的所有标志(例如 FOF_NORECURSION)
为方便起见,如果需要,这里是上述文档的链接... http://msdn.microsoft.com/en-us/library/windows/desktop/bb762164(v=vs.85).aspx
【问题讨论】: