Entwickler-Ecke

Dateizugriff - Dateien ais dem Papierkorb löschen


nina - Fr 17.01.03 15:04
Titel: Dateien ais dem Papierkorb löschen
Hallo!

Kann mir jemand helfen!
Ich habe eine CheckBox für Papierkorb. Ich möchte, wenn ich ich die CheckBox markiere den Inhalt mit dem unten stehen Button "Löschen" des Windows-Papierkorbes löschen. Wie würde das funktionieren?

mfg nina


tommie-lie - Fr 17.01.03 15:47

zumindest Win9x hat auf jedem Laufwerk einen versteckten Ordner namens "Recycled".
Du kannst also alle Laufwerke (C:-Z:) durchgehen, gucken ob ein Recycled-Ordner drin ist (brauch nciht rekusriv zu sein, entweder im Root, oder gar nicht) und alle enthaltenen Dateien außer die desktop.ini löschen.
Alternativ kann man glaub' ich auch irgendwie eine Message an das Papierkorb-Icon schicken, was ja im Kontextmenü auch einen Eintrag zum leeren des Papierkorbs hat, wie das aber geht, müsstest du Luckie fragen.


matze - Fr 17.01.03 16:55

bei winXP und W2k ist das doch genau so mit dem recycled ordner oder ?


tommie-lie - Fr 17.01.03 18:01

weiß ich ja eben nicht. Deswegen habe ich mich erstmal zurückgehalten und bin bei Win9x geblieben. Ob's bei den NTs auch so ist, müsste man jemanden fragen, der sie benutzt...


Raphael O. - Sa 18.01.03 00:49

also, ich habe win xp home und da gibts auf D: nen Recycled ordner, obwohl Windows auf C: liegt.

der ordner ist eine geschützte Systemdatei...

Fiji-Fighter


tommie-lie - Sa 18.01.03 11:52

geschützt?
Gut, weil NT. Bei mir ist das nur 'ne Systemdatei, die zuätzlich noch hidden ist, weil MS alles vor mir verstecken will.
Der Recycled muss auf jedem Laufwerk sein, damit Windows nachvollziehen kann, welches Laufwerk welcher Datei gehört. Dann wird nur noch der Pfad gespeichert. Im Prinzip total bescheuert, da schwerer für Programmierer, aber that's not life, that's MS.


Delete - Sa 18.01.03 14:21

Um den Papierkorb zu leeren:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
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')) ;
  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,
                       nil,
                       SHERB_NOCONFIRMATION or {Keine Abfrage}  
                       SHERB_NOPROGRESSUI or SHERB_NOSOUND);
  FreeLibrary(LibHandle);
  @SHEmptyRecycleBin := nil ;
end;

Ist glaube ich aus dem EDH.

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.


Luncustaf - Mo 20.01.03 11:16

hi Luckie,

wenn ich die procedur in meinen quellcode eintrage die procedur in meinem proivat abschnitt deklairere bekomme ich beim compilieren meines programmes immer eine
Zitat:
ungenügende forward- oder External-deklaration.

was muss ich da noch beachten?

gr€€tz


Delete - Mo 20.01.03 12:42

Gar nicht deklarieren. Einfach als eine der ersten Prozeduren hinter Implementation einfügen. Sie muß nur irgendwo vor dem ersten Aufruf auftauchen.


Luncustaf - Mo 20.01.03 14:09

hi,

danke hat funktioniert.

aber wieso muss ich die nicht in private deklarieren?


gr€€tz


Delete - Mo 20.01.03 14:14

Weil es keine Methode von deiner Form ist.