Einzelnen Beitrag anzeigen

Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Papierkorb leeren auf allen Partitionen

  Alt 8. Sep 2008, 08:14
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
Felix Alter
  Mit Zitat antworten Zitat