PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Warten bis anderes Programm beendet - C++



Lex_83
31-07-2008, 08:28
Hallo,

ich habe folgendes Problem.

Ich möchte mit meinem Programm eine bestehende .exe Datei aufrufen. Das mache ich über
ShellExecute(NULL, "open", "zwischen.exe",NULL,NULL, SW_SHOW);

Diese .exe datei führt eine Berechnung aus und schreibt diese in eine Datei.
Im Folgenden möchte ich mit meinem Programm auf diese Datei zugreifen. Da das Ausführen der Berechnung aber immer etwas Zeit braucht, muss ich mein Programm so lange anhalten, bis die Datei fertig geschrieben ist.

Zur Zeit mache ich das mit einer for schleife ich ich einfach x-tausendmal durchlaufen lasse. Das ist natrlich eher semigeeignet. :)

Ich suche jetzt nach einer Möglichkeit meinem Program zu sagen: "Warte solange bis die andere .exe fertig ist, bzw. die Ausgabedatei geschrieben und geschlossen ist."

Kann mir da einer von euch helfen ???

Danke schonmal Gruß Axel

PS: Noch ne kleine Frage. Was bedeutet eigentich das SW_SHOW in der Befehlszeile? vlt sowas ob das ausführen der dat ei im hintergrund oder sichtbar abläuft. Wie wäre dann der Befehl für im hintergrund?

Berufspenner
31-07-2008, 10:49
Hi

Ich hab mich mal ein bisschen schlau gemach und demnach gibt dir ShellExecute() nur Fehlercodes oder halt einen Code zurück, wenn alles glatt lief. Die ID des auszuführenden Programms bekommst du dadurch nicht, was dir die möglichkeit verbaut zu überprüfen, ob der Prozess noch lebt oder nicht. Weiterhin müsstest du dein Unterprogramm stattdessen in einen eigenen Prozess ausgliedern. Hier (http://www.goffconcepts.com/techarticles/development/cpp/createprocess.html) ein kleines Beispiel, wie du das mit CreateProcessW() machen kannst.

Zu deinem PS: Alle Modis stehen bei nShowCmd http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx