Konsole nach Start von Programm schließen
-
Hallo zusammen,
ich weiß nicht genau ob ich hier richtig bin,
und habe leider mit Hilfe der Suchfunktion nichts finden können was mich ein Stückchen weiter bringen konnte.
Mein Problem beschreibt sich wie folgt.
Ich möchte ein Programm über diesen Befehl:system( compl.str().c_str() );starten.
Allerdings soll die Konsole nicht erst das Ende des zu startenden Programmes abwarten sondern direkt nach dem
ausführen beenden.Ich bin mir bewusst das dies viel eleganter mit CreateProcess zu bewerkstelligen wäre aber ich habe dafür leider
keine Lösung finden können.
Hier nochmal der betreffliche Quelltextauszug:... char param1[255]; std::ostringstream compl; ... GetDlgItemText(hwnd, IDC_PARAM1, param1, 250); ... GetPrivateProfileString("Parameter", "1", "", param1, size, "./config.dat"); SetDlgItemText(hwnd, IDC_PARAM1, param1); compl << "program.exe" << " Zusaetzliche Parameter: 1" << "2 " << "3" << " " << param1 << " 4"; system( compl.str().c_str() ); PostQuitMessage(0); ...Vielen Dank schonmal im vorraus.
Gruß: max_
-
Verwende doch "CreateProcess"...
http://msdn.microsoft.com/library/en-us/dllproc/base/createprocess.aspalso:
CreateProcess(NULL, compl.str().c_str(), ...)
-
Super vielen Dank soetwas habe ich lange gesucht, allerdings scheint es noch nicht ganz zu funktionieren ich habe immer Probleme mit diesem Char Array

Compiler Output:
1>c:\test.cpp(127) : error C2664: 'CreateProcessA': Konvertierung des Parameters 2 von 'const char *' in 'LPSTR' nicht möglichGibt es denn keine Möglichkeit
compl_param.str().c_str() oder "char param1[255]" in einen konformen Typ umzuwandeln?
-
Das Problem ist, dass der zweite Parameter [b]kein{b] Const-String annimmt, sondern der String beschreibbar sein muss. Deshalb musst Du ihm entweder eine kopie des Trings (also strdup; free nicht vergessen) oder eben einen schreibbaren buffer übergeben.
-
Vielen vielen Dank

Es funktioniert nun alles so wie ich es haben wollte:char* newstring = _strdup( compl.str().c_str() );Schönen Gruß: max_