Windows API を使用して、多くのファイルとフォルダーを再帰的に削除しています。UIなしでエラーを抑えて使っています。問題は、これらのファイルのいずれかが使用中の場合、完全に失敗することです。私はその可能性を期待しており、そのようなケースを飛ばしてとにかくこれを続けてほしいと思っています。失敗する 1 つのファイルは、実際には、この削除コマンドを呼び出しているのと同じ EXE です (いずれにせよ、すべてが完了した後に削除されます。
これが私が今していることです:
procedure DeleteDirectory(const DirName: string);
var
FileOp: TSHFileOpStruct;
begin
FillChar(FileOp, SizeOf(FileOp), 0);
FileOp.wFunc := FO_DELETE;
FileOp.pFrom := PChar(DirName+#0);//double zero-terminated
FileOp.fFlags := FOF_SILENT or FOF_NOERRORUI or FOF_NOCONFIRMATION;
SHFileOperation(FileOp);
end;
使用中のファイルのイベントをスキップするにはどうすればよいですか? ドキュメントを見ましたが、これを行うことができるものは何も見つかりません。