Con las siguientes funciones podemos copiar, mover y borar carpetas y todo su contenido:
Código Delphi
[-]
uses
ShlObj, Masks, ShellApi;
function CopiarCarpeta(const carpetaOrigen,
carpetaDestion: string) : boolean;
var
FileOp: TSHFileOpStruct;
begin
FillChar(FileOp, SizeOf(FileOp), #0);
with FileOp do
begin
wFunc := FO_COPY;
Wnd := GetDesktopWindow;
pTo := PChar(carpetaOrigen);
pFrom := PChar(carpetaDestion+#0#0);
fFlags := FOF_NOCONFIRMATION or
FOF_SILENT or FOF_ALLOWUNDO;
end;
Result := (ShFileOperation(FileOp) = 0);
end;
function MoverCarpeta(const carpetaOrigen,
carpetaDestion: string) : boolean;
var
FileOp: TSHFileOpStruct;
begin
FillChar(FileOp, SizeOf(FileOp), #0);
with FileOp do
begin
wFunc := FO_MOVE;
Wnd := GetDesktopWindow;
pTo := PChar(carpetaOrigen);
pFrom := PChar(carpetaDestion+#0#0);
fFlags := FOF_NOCONFIRMATION or
FOF_SILENT or FOF_ALLOWUNDO;
end;
Result := (ShFileOperation(FileOp) = 0);
end;
function BorrarCarpeta(const rutaCarpeta: string) : boolean;
var
FileOp: TSHFileOpStruct;
begin
FillChar(FileOp, SizeOf(FileOp), #0);
with FileOp do
begin
wFunc := FO_DELETE;
Wnd := GetDesktopWindow;
pFrom := PChar(rutaCarpeta+#0#0);
fFlags := FOF_NOCONFIRMATION or
FOF_SILENT or FOF_ALLOWUNDO;
end;
Result := (ShFileOperation(FileOp) = 0);
end;