Hi,
Delphi-Quellcode:
for Drive
in Drives
do
try
Result := SHEmptyRecycleBin(Application.Handle, PChar(Drive + '
:\'),
SHERB_NOCONFIRMATION
or SHERB_NOSOUND) = S_OK;
except
//AV in SYSTEM32.DLL unter Win9x?
on EAccessViolation
do
Result := false;
end;
Warum unter Win98 ne
AV kommt hab ich noch nicht herausgefunden
nur dass diese nicht einmal mit try-except abgefangen wird (bzw. schon, wenn man das on-do weglässt, obwohl die Meldung nach EAccessViolation aussieht
). Ich glaube aber, der Papierkorb wird dann trotzdem geleert, nur das Icon wechselt nicht zu einem leeren Papierkorb.
Unter NT-Systemen funktiniert es jedenfalls so. Drives wäre ein String oder Array of Char, in dem die zu verarbeitenden Laufwerksbuchstaben drinstehen. Alternativ könntest du z. B. auch eine Stringliste durchgehen, in welcher die Stammverzeichnisse drinstehen.
Theoretisch müsstest du bei Partitionen, die keinen Buchstaben haben, den Pfad angeben, in dem sie bereitgestellt werden. Praktisch schiebt Windows es dann in den Übergeordneten Papierkorb (jedenfalls bei XP / was beim Löschen von Verzeichnissen sogar Probleme bereitet - man bekommt Meldungen, das Löschen sei nicht möglich
). Damit reicht es, alle Laufwerksbuchstaben, die in Frage kämen, durchzugehen.
Was meinst du mit "man findet keinen Papierkorb"?
So, bin heute Abend wieder da... Muss jetzt noch abwaschen und dann arbeiten fahren.
Mfg
FAlter