我发现堆栈上的示例代码使用 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