Konsole im Hintergrund ausführen



  • Hallo,
    ich entwickele gerade in Cli-C++ ein Fensterprogramm,
    welches im Hintergrund ein Konsolen-Programm aufrufen/ausführen
    soll. Bisher mache ich es über die system()-Funktion, aber es sollen
    keine Konsolen-Fenster im Hintergrund "herumflackern". Gibt es ein
    Funktion die das verhindert? Und weil es gerade passt: Wenn ich Cli-C++
    verwende, kann man die Executable auch auf einem Computer ohne .Net ausführen?
    (Ich verwende nur Funktionen zum zeichnen des Fensters,ansonsten kein .Net)

    0x0ERROR



  • Hab jetzt noch folgendes Problem:
    Wenn ich Kommandozeilenparameter(vorerst über die Konsole)
    mit angebe, kann das Programm nicht gefunden werden:

    private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e) {
    				 String ^pfad = Application::StartupPath;;
    				 Diagnostics::Process::Start(pfad + "\\Tools\\bin\\avr-g++"); 
    			 }
    

    0x0ERROR



  • Konsole im Hintergrund (Google erstes Ergebnis)

    ProcessStartInfo pinfo = new ProcessStartInfo();
    pinfo.WindowStyle = ProcessWindowStyle.Hidden;
    pinfo.FileName = "cmd.exe";
    Process.Start(pinfo);
    

    (Musst du halt auf die C++/CLI Syntax portieren)

    Wenn ich Cli-C++ 
    verwende, kann man die Executable auch auf einem Computer ohne .Net ausführen?
    

    Nein. Die Fenster sind auch .Net - und die ganzen managed Objekte werden von .Net verwaltet.

    Wenn ich Kommandozeilenparameter(vorerst über die Konsole) mit angebe, kann das Programm nicht gefunden werden:
    

    Das hat dann mit den Parametern nichts zu tun, der Pfad ist falsch. Und du darfst die Argumente nicht als Teil des Pfades angeben wenn du das Mit Process::Start machst.
    Du musst schauen was der StartupPath ist, ich vermute der zeigt auf deinen Debug Ordner und ich weiß ja nicht wo dein zu startendes Programm liegt 😃



  • Der obligatorische Link: http://www.c-plusplus.net/forum/263084


Anmelden zum Antworten