AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi shellexecute (ordner öffnen,später löschen) - Problem
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Overclocker · begonnen am 17. Mär 2008 · letzter Beitrag vom 17. Mär 2008
Antwort Antwort
Overclocker

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

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

  Alt 17. Mär 2008, 11: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
Overclocker

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

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

  Alt 17. Mär 2008, 15:58
Problem gelöst: lag nicht an einer instanz, sondern durch das nutzen eines shelltreviews war da noch eine gewisse verbindung da (die meiner meinung eigentlich beim schließen des formulars geschlossen werden sollte), die zu diesem fehler führt.
ein
tabsheet2.destroy (wo die shelltreeview komponente vorhanden ist) im onclose ereignis löst das problem
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#3

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

  Alt 17. Mär 2008, 16:45
Statt Destroy solltest Du aber Free verwenden.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz