1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

C/C++: Projekt sowohl Command line als auch GUI

    • Frage
  • MaxAuthority
  • 3. April 2003 um 16:31
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • MaxAuthority
    Punkte
    3.165
    Beiträge
    626
    • 3. April 2003 um 16:31
    • #1

    Ich hab ein Programm in C unter Windows, das mir viele alttägliche arbeiten automatisiert.
    Jetzt hab ich es aber (mit gcc 3.2) als Windows-Projekt ohne Fenster/Dialog konzipiert, damit mir nicht immer eine Konsole aufpoppt, wenn ich das programm starte. Es gibt in Dev-C++ zwar eine Option "don't create console window", wenn ich es als Kommandozeilen Programm compiliere, aber irgendwie klappt die nicht.

    jetzt würd ich aber gerne auch die option haben, wenn ich das programm von der kommandozeile aufrufe, dass ich printf() und scanf() machen kann, aber das geht nur wenn ich es als Command Line programm erstelle.

    hmm, hat irgendwer eine einfach lösung um das Aufpoppen der Kommandozeile zu verhindern, ohne bei jeder änderung immer manuell die optionen umstellen zu müssen, und einmal ein Windows-Programm und einmal ein CommandLine-Programm zu erstellen? Vielleicht irgendwelche Preprocessor commands?

  • Irrlicht
    Punkte
    421
    Beiträge
    82
    • 3. April 2003 um 17:15
    • #2

    Du kannst ein normales Windows-Programm machen und in der WinMain einfach kein Fenster anlegen. Printf und scanf sollte da auch gehen, wenn du die stdio.h einbindest.

  • MaxAuthority
    Punkte
    3.165
    Beiträge
    626
    • 3. April 2003 um 17:27
    • #3
    Zitat von Irrlicht

    Du kannst ein normales Windows-Programm machen und in der WinMain einfach kein Fenster anlegen. Printf und scanf sollte da auch gehen, wenn du die stdio.h einbindest.

    Danke, für die Antwort, aber eben leider nicht, weil die ganzen consolen sachen dann auch nicht initialisiert werden.


    Ich habs jetzt einfach mal ganz arg hingepfuscht, und folgendes gemacht:
    --------
    char buffer[256];
    int hCrtIn, hCrtOut;
    FILE *conIn, *conOut;

    AllocConsole();
    hCrtIn = _open_osfhandle ((long) GetStdHandle(STD_INPUT_HANDLE), _O_TEXT);
    hCrtOut = _open_osfhandle ((long) GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT);
    conIn = _fdopen( hCrtIn, "r" );
    conOut = _fdopen( hCrtOut, "w" );
    *stdin = *conIn;
    *stdout = *conOut;
    fgets (buffer, 256, stdin);
    fprintf (stdout, buffer);
    system("PAUSE");
    FreeConsole();
    ------------

    ich erstell einfach ein WindowsProjekt, und wenn ich jetzt consolen output und input brauche, öffne ich mit AllocConsole() einfach eine neu console, und hol mir über low-level C-Funktionen die handles.
    funktioniert bis jetzt einwandfrei, außder dass ich auch eine neue console erstelle, wenn ich das programm schon von der command line aufrufe, aber es gibt (seit XP) auch noch einen AttachConsole() befehl, werd mich mal mit dem ein bisschen spielen....

    und da sagen die leute, Windows wäre nicht für die CLI ausgelegt - geht doch eh alles :)

  • Maximilian Rupp 27. Dezember 2024 um 12:08

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum