Home » Tipps & Tricks » System » Systemfunktionen » Papierkorb ohne Nachfrage leeren

Papierkorb ohne Nachfrage leeren

Im Papierkorb werden unter Windows normalerweise Dateien zwischengespeichert, bevor sie endgültig gelöscht werden sollen.Folgende Procedure leert den Papierkorb im Hintergrund. Es kommt keine Bestätigung, kein Sound bei erfolgreicher Leerung, auch der Fortschrittsbalken wird versteckt.

procedure EmptyRecycleBin;
const
  SHERB_NOCONFIRMATION = $00000001 ;
  SHERB_NOPROGRESSUI   = $00000002 ;
  SHERB_NOSOUND        = $00000004 ;
type
  TSHEmptyRecycleBin = function (Wnd : HWND;
                                 pszRootPath : PChar;
                                 dwFlags : DWORD):
                                 HRESULT; stdcall ;
var
  SHEmptyRecycleBin : TSHEmptyRecycleBin;
  LibHandle         : THandle;

begin
  LibHandle := LoadLibrary(PChar('Shell32.dll')) ;
  try
    if LibHandle <> 0 then
    begin
      @SHEmptyRecycleBin:= GetProcAddress(LibHandle,
                                          'SHEmptyRecycleBinA');
      if @SHEmptyRecycleBin <> nil then
      begin
        SHEmptyRecycleBin(Application.Handle,
                          nil,
                          SHERB_NOCONFIRMATION or {Keine Abfrage}
                          SHERB_NOPROGRESSUI or SHERB_NOSOUND);
      end
      else
        RaiseLastOSError;
    end
    else
      RaiseLastOSError;
  finally
    @SHEmptyRecycleBin:=nil;
    FreeLibrary(LibHandle);
  end;
end;

Die entsprechende Funktion kommt aus der DLL Shell32.dll und wird dynamisch in das Programm eingebunden.RaiseLastOSError ist erst ab Delphi 6 verfügbar. Programmierer, die mit älteren Versionen arbeiten müssen an dieser Stelle RaiseLastWin32Error verwenden.