![]() |
Wie kann geprüft werden ob ShellExecute
Guten Tag Delphianer,
ich schreibe eine Datei mit TFileStream auf die Platte. Dies gelingt auch gut. Danach öffne ich die Datei mit ShellExecute. Das gelingt auch. Nach dem ich Datei anzeigt und geschlossen habe, möchte ich sie wieder löschen. Mit diesem Code wird nicht mal das Bild angezeigt:
Delphi-Quellcode:
Wenn ich die Zeile: DeleteFile(pSchreibeDatei); Enable dann wird die Datei angezeigt.pSchreibeStream := TFileStream.Create(pSchreibeDatei, fmCreate); dtmdMain.dokumenteDOKUMENT.SaveToStream(pSchreibeStream); pSchreibeStream.Free; ShellExecute(Handle, 'open', PChar(pSchreibeDatei), nil, nil, SW_SHOWNORMAL); DeleteFile(pSchreibeDatei); Aber wann kann ich sie wieder von der Platte löschen? Mit Gruß HPB |
AW: Wie kann geprüft werden ob ShellExecute
Es gibt zig Implementierungen von ExecAndWait, eine davon kann man sicherlich benutzen.
|
AW: Wie kann geprüft werden ob ShellExecute
Hallo,
die Implementierungen verwenden entweder ShellExecuteEx oder CreateProcess/WaitUntil... Heiko |
AW: Wie kann geprüft werden ob ShellExecute
"Wie kann geprüft werden ob ShellExecute" es richtig gemacht hat?
Indem man den Rückgabewert von SchellExecute prüft, so wie man das bei allen APIs/Funktionen machen sollte? "Wie kann geprüft werden ob ShellExecute das gestartete Programm" fertig/bendet ist? Indem man schaut ob das Programm noch läuft * z.B. über die ToolsAPI nach der EXE/Instanz suchen * nach dem Fenster der Anwendung suchen * CreateProcess benutzen und das Prozess-Handle prüfen * ... |
AW: Wie kann geprüft werden ob ShellExecute
Zitat:
![]() ![]() ![]() |
AW: Wie kann geprüft werden ob ShellExecute
Und was ist mit SingleInstanz-Anwendungen.
> Dein Gestartetes beendet sich wieder und ein anderer Prozess arbeitet dafür weiter. Aber ja, grundsätzlich gebe ich dir Recht. |
AW: Wie kann geprüft werden ob ShellExecute
Was mich viel mehr verwirrt bzw. was Deine ganz Vorgehensweise in den meisten Fälle scheitern lässt ist aber doch auch die Tatsache, dass eine Datei die gerade geöffnet ist i.d.R. von Windows nicht gelöscht werden kann! Das Löschen der Datei solange sie noch läuft (wenn es eine EXE ist) bzw. geöffnet ist (z.B. wenn es ein Excel-Document ist) muss meiner Meinung nach scheitern!
.....aber das wäre ja dann erst der nächste Fehler der bei Dir auftauche müsste, oder seht Ihr das anders??? |
AW: Wie kann geprüft werden ob ShellExecute
Darum will er ja warten, bis das Programm wieder beendet wurde. :zwinker:
Alternativ kann man auch Windows etwas löschen lassen. > Delete on rebot Dann löscht Windows das beim nächsten Windows-Start/Neustart. |
AW: Wie kann geprüft werden ob ShellExecute
MIST.... wer lesen kann ist klar im Vorteil :( :roll:
|
AW: Wie kann geprüft werden ob ShellExecute
Zitat:
Außerdem lassen die meisten Anwendungen das File-Handle auch nicht geöffnet nachdem sie die Datei eingelesen haben und dann ist die Datei auch löschbar. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz