Papierkorb ohne Nachfrage leeren |
|
| System | Win9x, WinNT, Win2000, WinXP, Vista, Win7 |
|---|---|
| Ab Delphi-Version | Delphi 1 |
| Letzte Änderung | 28.09.2010 |
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.