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 ...