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.asp

    also:

    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öglich
    

    Gibt 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_


Anmelden zum Antworten