![]() |
Papierkorb leeren auf allen Partitionen
Hallo DPler,
weis jemand wie man die Papierkoerbe auf allen Partitionen leeren kann und nicht nur auf der C: Platte? Danke! |
Re: Papierkorb leeren auf allen Partitionen
Hi,
mit ner For-Schleife. Mfg FAlter |
Re: Papierkorb leeren auf allen Partitionen
Hm, und wie? Ich meine ich hab eigentlich im Windows-Subforum gefragt nicht im Programmieren. Aber eigentlich ist mir beides recht um ehrlich zu sein. Also Problem ist ja dass man auf all den anderen Partition keinen Papierkorb findet!
|
Re: Papierkorb leeren auf allen Partitionen
Hi,
Delphi-Quellcode:
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.
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; 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 |
Re: Papierkorb leeren auf allen Partitionen
Naja es gibt halt kein Icon fuer die anderen Partition ausser der wo Windows installiert ist. Das meinte ich damit!
Danke fuer den Code Snippet! |
Re: Papierkorb leeren auf allen Partitionen
Zitat:
Zitat:
|
Re: Papierkorb leeren auf allen Partitionen
Zitat:
|
Re: Papierkorb leeren auf allen Partitionen
Zitat:
|
Re: Papierkorb leeren auf allen Partitionen
Da es nur 1 "Papierkorb" gibt, ist das Löschen einfach:
.
Delphi-Quellcode:
Procedure EmptyRecycleBin ;
Const SHERB_NOCONFIRMATION = $00000001; SHERB_NOPROGRESSUI = $00000002; SHERB_NOSOUND = $00000004; Type TSHEmptyRecycleBin = Function(Wnd: HWND; LPCTSTR: PChar; DWORD: Word): Integer; StdCall; Var SHEmptyRecycleBin: TSHEmptyRecycleBin; LibHandle: THandle; Begin LibHandle:=LoadLibrary(PChar('Shell32.dll')); If LibHandle <> 0 Then @SHEmptyRecycleBin:=GetProcAddress(LibHandle, 'SHEmptyRecycleBinA') Else Begin MessageDlg('Failed to load Shell32.dll.', mtError, [mbOK], 0); Exit; End; If @SHEmptyRecycleBin <> Nil Then SHEmptyRecycleBin(Application.Handle, '', SHERB_NOCONFIRMATION Or SHERB_NOPROGRESSUI Or SHERB_NOSOUND); FreeLibrary(LibHandle); @SHEmptyRecycleBin:=Nil; End ; |
Re: Papierkorb leeren auf allen Partitionen
Schaut eigentlich nie jemand auf die Sparte beim Antworten? :gruebel: Wir sind hier im Windows-Forum, nicht in einer der Programmierforen...
Warum wird hier denn jetzt mit Code-Schnipseln um sich geworfen, wenn das ganze durch 2 Klicks erledigt werden kann? :roll: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz