Im EDH (
Easy Delphi Helper) gibt es eine Funktion, mit der man den Papierkorb leeren kann. Das würde ich allerdings davon abhängig machen, ob denn überhaupt Dateien vorhanden sind. Und dafür habe ich diese Funktion von NicoDE ausgegraben, die
IMHO unbedingt in unsere Bibliothek gehört:
Delphi-Quellcode:
type
TSHQueryRBInfo =
packed record
cbSize : dword;
i64Size : int64;
i64NumItems : int64;
end;
TSHQueryRecycleBin = function(pszRootPath: LPCTSTR;
var pSHQueryRBInfo: TSHQueryRBInfo): HRESULT; stdcall;
var
SHQueryRecycleBin : TSHQueryRecycleBin = nil;
RBHandle : THandle = 0;
RBInfo : TSHQueryRBInfo;
begin
RBHandle := LoadLibrary('shell32.dll');
if(RBHandle <> 0) then
begin
SHQueryRecycleBin := GetProcAddress(RBHandle,'SHQueryRecycleBinA');
if(@SHQueryRecycleBin = nil) then
begin
FreeLibrary(RBHandle); RBHandle := 0;
end;
end;
fillchar(RBInfo,sizeof(TSHQueryRBInfo),0);
RBinfo.cbSize := sizeof(TSHQueryRBInfo);
if(RBHandle <> 0) and (assigned(SHQueryRecycleBin)) then
if(SHQueryRecycleBin('',RBInfo) = S_OK) then
if(RBInfo.i64NumItems > 0) then
begin
// Daten vorhanden, Papierkorb kann geleert werden!
// (s. Funktion im EDH)
end;
if(RBHandle <> 0) then FreeLibrary(RBHandle);
end.
Das meiste sollte verständlich sein. Wichtig ist nur die Zeile
if(RBInfo.i64NumItems > 0) then
In dem Fall könnt ihr davon ausgehen, dass sich etwas im Papierkorb befindet, was dann auch gelöscht werden kann. Interessant zu wissen ist, dass die unsichtbare Datei "desktop.ini", die sich in jedem Fall im Papierkorb-Ordner befindet, davon ausgenommen ist.
Danke an NicoDE!
[edit=Matze][code] durch [delphi]-Tags ersetzt und Code formatiert. Mfg, Matze[/edit]