Einzelnen Beitrag anzeigen

Overclocker

Registriert seit: 10. Jan 2007
215 Beiträge
 
#1

shellexecute (ordner öffnen,später löschen) - Problem

  Alt 17. Mär 2008, 12:57
Hallo,
mit folgendem Code öffne ich einen Ordner:
Delphi-Quellcode:
procedure ShowFolder(strFolder: string);
begin
  ShellExecute(Application.Handle, PChar('open'), PChar(strFolder), nil, nil, SW_SHOWNORMAL);
end;

procedure Form2.sTabSheet2Show(Sender: TObject);

begin
messagedlg('Es wird nun ein Ordner Fenster geöffnet, indem Sie alle Dateien speichern können',mtInformation,[mbOK],0);
ShowFolder(ExtractFilePath(ParamStr(0))+'\Musik\'+inttostr(strtoint(Musiknr.text)-1));

end;
so, das funktioniert soweit auch ganz gut. jetzt zu meinem problem:
mit

deldir(ExtractFilePath(ParamStr(0))+'Musik\'+inttostr(Musiknr.text)); möchte ich den ordner löschen, das funktioniert auch soweit NUR das problem ist folgendes:
ich öffne mein programm, lass den ordner öffne via delphi und kopier dann alles was ich will in diesen ordner rein. dann geh ich ganz normal auf schließen (da es ja ein "normaler" windows ordner ist).
so, wenn ich das gemacht habe, dann kommt bei der DelDir Funktion:

Delphi-Quellcode:
function deldir(dir: string): Boolean;
var
  fos: TSHFileOpStruct;
begin
  ZeroMemory(@fos, SizeOf(fos));
  with fos do
  begin
    wFunc := FO_DELETE;
    fFlags := FOF_SILENT or FOF_NOCONFIRMATION;
    pFrom := PChar(dir + #0);
  end;
  Result := (0 = ShFileOperation(fos));
end;
ein fehler und zwar dass der Zugriff verweigert wurde (warscheinlich weil irgendwo im hintergrund der ordner trotzdem noch offen ist und somit geschützt ist).
wenn ich mein programm dann schließe, wird der ordner auch gelöscht nur es kommt im programm halt immer der fehler, dass der zugriff verweigert wurde und das irritiert den user ja.

woran liegt das?

mfg
  Mit Zitat antworten Zitat