PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C++] Aufrufe überlagern sich


Gast
2010-02-18, 13:37:36
Hallo zusammen !


if (...)
{
ShellExecute(0, "open", "cmd.exe", ...);
...
}
if (...)
{
ShellExecute(0, "open", "cmd.exe", ...);
}


In "..." steht die Pfadangabe zu einem externen Programm + Paramter, durch das ein Wert berechnet wird, der anschließend in einem File gespeichert wird.

Das Programm soll zwei Werte berechnen, ich brauche dazu leider die cmd.exe ! Das Problem ist nun, dass die Berechnung des ersten Wertes etwas Zeit benötigt, die zweite Berechnung aber auf das Ergebnis des ersten Wertes angewiesen ist. Die zweite Berechnung wird allerdings sofort aufgerufen, während die erste noch zu Gange ist. Das Ergebnis ist dann, dass die Ausgabefiles leer sind oder garnicht erst erstellt werden. Debugge ich das Programm und steppe schrittweise durch, werden natürlich alle Files korrekt erstellt.
Kann ich das im Code irgendwie einbauen, dass der erste Aufruf komplett abgearbeitet und dann erst der zweite Aufruf gestartet wird ? Beim Aufruf externer Programme ist das eher schwer, oder ?

noid
2010-02-18, 14:34:08
http://www.codeguru.com/forum/archive/index.php/t-202235.html

Ist das schwer? "ShellExecute wait"

Nighthawk13
2010-02-18, 14:39:49
Oder "system(cmd)", blockiert auch(zeigt allerdings ne Konsole an).

Gast
2010-02-18, 14:47:30
(zeigt allerdings ne Konsole an).

Das hatten ich zuerst auch so gelöst, allerdings soll es eben das nicht ;).

Noid:

Scheinbar isses nicht schwer, ich hab's aber halt nicht gefunden...

Gast
2010-02-18, 14:48:02
Achja, trotzdem danke !

noid
2010-02-18, 14:57:20
Das hatten ich zuerst auch so gelöst, allerdings soll es eben das nicht ;).

Noid:

Scheinbar isses nicht schwer, ich hab's aber halt nicht gefunden...

Die richtigen Antworten mit der richtigen Verpackung zu geben ist nicht so meine Stärke. Ein Aspekt leidet da immer :freak:

Achja, trotzdem danke !

Bitte, auch wenn's ander klang - sowas mach ich gern. ;D

Nighthawk13
2010-02-18, 15:11:04
CreateProcess() + WaitForSingleObject() sind auch noch ne Option unter win32.