Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Dateien öffnen und abwarten bis sie geschlossen werden (https://www.delphipraxis.net/68743-dateien-oeffnen-und-abwarten-bis-sie-geschlossen-werden.html)

maynard 4. Mai 2006 15:43


Dateien öffnen und abwarten bis sie geschlossen werden
 
Tach ...

Der Titel is blöd, weiß!

Folgendes: Ich habe ein Programm, dass Dateien in einer Datenbank verwaltet. Vorerst (bis ich eine eigenes Anzeigeprogramm geschrieben hab) habe ich mir das so gedacht, dass ich eine temporäre Datei anlege, diese öffne und sobald das Anzeigeprogramm wieder geschlossen wird, wird auch die temporäre Datei wieder gelöscht ... eben so wie es zb. die eMule Vorschau macht. Wie kann ich darüber informiert werden, dass das Anzeigeprogramm beendet wurde. Ich hoffe doch, dass das auch ohne eine blockierende Funktion möglich ist?!

MfG

bastischo 4. Mai 2006 16:42

Re: Dateien öffnen und abwarten bis sie geschlossen werden
 
Ich weiß zwar nicht genau, wie dein Programm aufgebaut ist aber... funktioniert vllt ein ondestroy???

DevilsCamp 4. Mai 2006 19:18

Re: Dateien öffnen und abwarten bis sie geschlossen werden
 
Zitat:

Zitat von bastischo
Ich weiß zwar nicht genau, wie dein Programm aufgebaut ist aber... funktioniert vllt ein ondestroy???

Er will ja vorerst ein externes Programm starten.


@maynard:
Stichwort CreateProcess und WaitForSingleObject:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  si          : TStartupInfo;
  pi          : TProcessInformation;
  s           : String;
  parameter   : String;
begin
  parameter := 'Parameter des Anzeige Programmes';
  s := 'C:\Pfad\Zur\Anzeige_Anwendung.exe '+parameter;

  FillChar(si, SizeOf(TStartupInfo), 0);
  si.cb := SizeOf(TStartupInfo);
  if (CreateProcess(nil,PChar(s), nil, nil, False, NORMAL_PRIORITY_CLASS,nil, PChar(ExtractFilePath(s)), si, pi)) then
  begin
    WaitForSingleObject(pi.hProcess, INFINITE);
    CloseHandle(pi.hProcess);
  end;
end;
Durch
Delphi-Quellcode:
WaitForSingleObject(pi.hProcess, INFINITE);
wartet dein Programm nun solange, bis das andere beendet wurde. Statt INFINITE kann auch jede andere beliebige Zeit (in Millisekunden) angegeben werden).

Mutier 29. Jul 2006 14:12

Re: Dateien öffnen und abwarten bis sie geschlossen werden
 
Hallo,

vielen, vielen Dank für die Erklärung von CreateProcess. Ich verwende einen leicht abgewandelten Code, da ich nicht auf das Programmende warten muss. Ich habe allerdings noch eine "Noob"-Frage. Wenn ich mein Programm, aus dem ich das andere Programm gestartet habe, beende und das andere aber weiterläuft, muss ich dann beim Closen meines Tools die Zeile
Code:
CloseHandle(pi.hProcess)
ausführen?

Vielen Dank für Deine/Eure Hilfe.
Ciao
Murmel

Luckie 29. Jul 2006 14:15

Re: Dateien öffnen und abwarten bis sie geschlossen werden
 
Guck mal in der Code-Library diesbezüglich: ShellExecuteAndWaitShellExecuteAndWait.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:45 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