0

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

4

1 に答える 1

4

フォルダー自体を削除するように指示しているので、削除されます。フォルダー内のファイルだけを削除するには、代わりにファイル名のワイルドカーク マスクを使用する必要があります。

FileOp.pFrom := PChar(DirName+'\*.*'#0);
于 2013-11-05T16:20:46.617 に答える