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.