2017-12-18 14 views
0

Ich versuche, ein Programm, das eine andere .exe und Parameter übergeben, um es zu machen. Mein Fall ist, ein Programm zu erstellen, um zwei (dosbox.exe) zu öffnen und Befehle an es zu übergeben, um ausführbare Dateien auszuführen. Ich versuche den Testprozess zu automatisieren. Ich habe versucht, Code wie dieseRun exe Formular eine andere exe und übergeben Parameter

ShellExecute(NULL, "open", "C:\chat\DOSBox 0.74.lnk.exe", NULL, NULL, SW_SHOWDEFAULT); 

Aber es nicht einmal arbeiten. Irgendeine Hilfe?

+0

entfernt Montage Tag –

+0

Ja, sorry für die Verwirrung, ich die Versammlung Tag Ursache habe ich dosbox bin mit Code in assemblyx86 geschrieben laufen, aber obliviously die Frage hat nichts zu mit der Montage machen. Es tut uns leid. –

Antwort

1

Wie wäre es mit: std::system("dosbox -c myCommand"); (vorausgesetzt, dosbox.exe und Ihre benutzerdefinierte sind in Ihrem Weg)?

Um zwei im Hintergrund zu starten, tun:

std::system("start dosbox -c myCommand1"); 
std::system("start dosbox -c myCommand2"); 
// Program has launched these in the background 
// and continues execution here. 

Alternativ könnten Sie einen Thread für jeden std::system() Aufruf spin up:

auto cmd1 = std::async([] { std::system("dosbox -c myCommand1"); }); 
auto cmd2 = std::async([] { std::system("dosbox -c myCommand2"); }); 
// Program is launching these in the background 
// and continues execution here. 

Sie auch den Rückgabewert überprüfen möchten können für jeder std::system() Anruf, um sicherzustellen, dass es gelungen ist.


aktualisieren: Sie fragen, wie zwei Befehle in den Vordergrund in einem einzigen dosbox laufen, die in einem anderen Ordner befindet. Sie können den vollständigen Pfad so einzubetten:

std::system("c:\\MyDosBox\\dosbox.exe -c c:\\My\\Progams\\myCommand1.exe p1 p2 && c:\\Other\\myCommand2.exe p3 p4");` 
+0

Angenommen, ich verwende den C++ - Code mit Visual Studio, und die Datei dosbox.exe befindet sich in einem anderen Verzeichnis. Ich muss Code schreiben, der dosbox öffnen würde (es ist wie cmd), 2 Befehle übergeben, damit es ausgeführt wird, und ich möchte, dass die Dosbox nicht im Hintergrund läuft. Entschuldigung, aber ich habe noch nie zuvor eine ähnliche Sache gemacht. Schätze deine Hilfe. –

+0

@SayedAlesawy Ich habe ein Update hinzugefügt. – metal