PDA

Ver la Versión Completa : Enviar uno o más archivos a la papelera de reciclaje


dec
07-06-2006, 19:46:21
Con las siguientes funciones es posible enviar a la papelera de reciclaje de Windows (en lugar de borrarlos) uno o varios archivos a la vez.

La primera función es en realidad la encargada de realizar el trabajo. Admite como parámetro la ruta de un archivo, el que queremos enviar a la papelera.

La segunda función admite la ruta de un directorio, y también una determina máscara de archivos, de modo que puedan enviarse a la papelera varios archivos de una vez.

Nótese que la segunda función trabaja con la primera.


uses
ShlObj, Masks, ShellApi;

procedure ALaPapelera(const archivo: string);
var
FOS: TSHFileOpStruct;
begin
if FileExists(archivo) then begin
FillChar(FOS, SizeOf(FOS), #0);
FOS.wFunc := FO_DELETE;
FOS.Wnd := GetDesktopWindow;
FOS.pFrom := PChar(archivo+#0#0);
FOS.fFlags := FOF_NOCONFIRMATION
or FOF_SILENT or FOF_ALLOWUNDO;
ShFileOperation(FOS);
end;
end;

procedure ALaPapelera(dir, mascara: string);
var
SR: TSearchRec;
begin
dir := IncludeTrailingPathDelimiter(dir);
FindFirst(dir+mascara, faAnyFile, SR);
repeat
ALaPapelera(dir + SR.Name);
until FindNext(SR) <> 0;
SysUtils.FindClose(SR);
end;