function TForm1.DeleteDir(const Handle: THandle; const str: string): Boolean;
var
f: TSHFileOpStruct;
begin
if DirectoryExists(str) then
begin
memo1.Lines.Add('正在删除文件夹: '+str);
FillChar(f, SizeOf(f), 0);
f.Wnd := Handle;
f.wFunc := FO_DELETE;
f.pFrom := PAnsiChar(str);
f.fFlags := FOF_NOCONFIRMATION;
if SHFileOperation(f) = 0 then
Result:= true
else
Result:= False;
end else
Result := False;
end;if (FindFirst(copyads + '*.*', faAnyFile, SearchRec) = 0) and (Restoring=true) then
begin //删除文件夹
repeat
if ((SearchRec.Attr and faDirectory = 16) and (SearchRec.Name <> '.') and (SearchRec.Name <> '..')) then
begin
if DeleteDir(self.Handle,copyads + SearchRec.Name)=true then
memo1.Lines.Add('删除目录 '+copyads + SearchRec.Name)
else
memo1.Lines.Add('文件夹 '+copyads + SearchRec.Name+' 删除失败');
end;
Application.ProcessMessages;
until (FindNext(SearchRec) <> 0);
FindClose(SearchRec);
end;
var
f: TSHFileOpStruct;
begin
if DirectoryExists(str) then
begin
memo1.Lines.Add('正在删除文件夹: '+str);
FillChar(f, SizeOf(f), 0);
f.Wnd := Handle;
f.wFunc := FO_DELETE;
f.pFrom := PAnsiChar(str);
f.fFlags := FOF_NOCONFIRMATION;
if SHFileOperation(f) = 0 then
Result:= true
else
Result:= False;
end else
Result := False;
end;if (FindFirst(copyads + '*.*', faAnyFile, SearchRec) = 0) and (Restoring=true) then
begin //删除文件夹
repeat
if ((SearchRec.Attr and faDirectory = 16) and (SearchRec.Name <> '.') and (SearchRec.Name <> '..')) then
begin
if DeleteDir(self.Handle,copyads + SearchRec.Name)=true then
memo1.Lines.Add('删除目录 '+copyads + SearchRec.Name)
else
memo1.Lines.Add('文件夹 '+copyads + SearchRec.Name+' 删除失败');
end;
Application.ProcessMessages;
until (FindNext(SearchRec) <> 0);
FindClose(SearchRec);
end;
if DeleteDir(self.Handle,copyads + SearchRec.Name) then
function DelDirectory(const Source:string): boolean;
var
fo: TSHFILEOPSTRUCT;
begin
FillChar(fo, SizeOf(fo), 0);
with fo do
begin
Wnd := 0;
wFunc := FO_DELETE;
pFrom := PChar(source+#0);
pTo := #0#0;
fFlags := FOF_NOCONFIRMATION+FOF_SILENT;
end;
Result := (SHFileOperation(fo) = 0);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
DelDirectory('C:\TEST') ;
end;