Einzelnen Beitrag anzeigen

moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#14

Re: Verzeichnis im Startmenü löschen

  Alt 7. Jul 2009, 19:37
Moin !

Ich bin einen Schritt weiter.
Bevor ich die Verzeichnisse Lösche, lösche ich die darin befindlichen Shortcuts.
Dafür erzeuge ich eine Liste mit allen *.LNK Files.

Der Code schaut so:
Delphi-Quellcode:
  FileList := TStringList.Create;
  ReadAllFilesInDir(GetSpecialFolder(handle, DirCSIDL) + '\' + AppName + '\*.lnk', FileList);
Und der Code für ReadAllFilesInDir ...
Delphi-Quellcode:
Procedure ReadAllFilesInDir(mask: string; Var Liste : TStringList);
var
  search : TSearchRec;
  directory : string;
begin
  directory := ExtractFilePath(mask);

  // find all files
  if FindFirst(mask, $23, search) = 0 then
  begin
    repeat
      // add the files to the listbox
      if (lowercase(search.Name) <> 'make.exe') AND
         (lowercase(search.Name) <> 'install.xml') then
        Liste.Add(ExpandFileName(directory + search.Name));
    until FindNext(search) <> 0;
  end;

  // Subdirectories/ Unterverzeichnisse
  if FindFirst(directory + '*.*', faDirectory, search) = 0 then
  begin
    repeat
      if ((search.Attr and faDirectory) = faDirectory) and (search.Name[1] <> '.') then
        ReadAllFilesInDir(directory + search.Name + '\' + ExtractFileName(mask), Liste);
    until FindNext(search) <> 0;
    FindClose(search);
  end;
end;
Nachdem das ReadAllFilesInDir gelaufen ist habe ich auf dem Verzeichnis ein Handle. Und das bleibt auch bestehen wenn ich zu dem Codeteil komme wo ich das Verzeichnis löschen möchte.
Wenn ich das File Handle manuell per Process Explorer lösche, dann klappt auch das löschen des Verzeichnisses!

Frage also ...
Was erzeugt in dem obrigen Code ein Filehandle und wie kann ich das wieder los werden?

Anbei noch eine Grafik ...
Miniaturansicht angehängter Grafiken
handle_850.png  
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat