Announcement

Collapse
No announcement yet.

Konsolenanwendung die kein DOS Fenster öffnet

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Konsolenanwendung die kein DOS Fenster öffnet

    Hi

    Ich habe eine Konsolenanwendung geschrieben. Die läuft kurz durch und beendet sich dann wieder. Das Problem ist, dass jedesmal ganz kurz dieses DOS-Fenster aufblitzt. Kann ich das irgendwie unterbinden?

    Vielen Dank

  • #2
    Originally posted by McMighty View Post
    Das Problem ist, dass jedesmal ganz kurz dieses DOS-Fenster aufblitzt. Kann ich das irgendwie unterbinden?
    Hallo,

    unterbinden kannst du das nicht - denke ich. Aber wie wäre es, wenn du eine reguläre VCL-Applikation schreibst, wo du einfach die Form1 entfernst und direkt in die WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) deinen Code reinschreibst?
    Mit freundlichen Grüßen,
    Freiheit
    ---
    //don't question it ... it's clearly an optimization
    ---
    lafin.de lanmonitor.de

    Comment


    • #3
      Originally posted by McMighty View Post
      Das Problem ist, dass jedesmal ganz kurz dieses DOS-Fenster aufblitzt. Kann ich das irgendwie unterbinden?

      Vielen Dank
      Doch das geht!

      Guck mal hier: http://entwickler-forum.de/showpost....74&postcount=3
      Lerne aus den fehlern Anderer! Du hast nicht die Zeit sie selbst zu machen.

      Comment


      • #4
        Ah ja.

        Mit unterbinden meinte ich nicht dass das Fenster stehen bleiben soll, sondern, dass es gar nicht erst aufpoppen soll ;-)

        Sorry, vielleicht nicht eindeutig ausgedrückt.

        Viele Grüße

        Comment


        • #5
          http://www.marquardtnet.info/cecke/q...quicky_25.html

          Letzte Zeile -> vielleicht kann man dieses Flag auch nutzen bei eigenen Start der Konsolenanwendung
          Christian

          Comment


          • #6
            Hallo,

            also nochmal genauer: Neues VCL-Project erstellen, Form1/Unit1 schließen und nicht speichern lassen und den Code in Project1.cpp in etwa so anpassen (ist noch nicht optimiert, sondern nach etwa anderthalb Minuten herumprobieren vom eigentlichen Quelltext übrig):

            Code:
            //---------------------------------------------------------------------------
            
            #include <vcl.h>
            #pragma hdrstop
            //---------------------------------------------------------------------------
            WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
            {
               try
               {
               TStringList *SL = new TStringList();
               SL->Add("Test");
               SL->SaveToFile("D:\\Desktop\\Windowless\\text.txt");
               delete SL;
                   //Application->Initialize();
                   //Application->Run();
               }
               catch (Exception &exception)
               {
                   //Application->ShowException(&exception);
               }
               catch (...)
               {
                   try
                   {
                      throw Exception("");
                   }
                   catch (Exception &exception)
                   {
                      //Application->ShowException(&exception);
                   }
               }
               return 0;
            }
            //---------------------------------------------------------------------------
            Ergibt: Eine Anwendung ohne Fenster und ohne Konsole, mit der Größe von 208 KiByte. Und das Beste: Da blitzt nix auf
            Mit freundlichen Grüßen,
            Freiheit
            ---
            //don't question it ... it's clearly an optimization
            ---
            lafin.de lanmonitor.de

            Comment


            • #7
              a) erstellt man solche Anwendungen über den Konsolenexperten, da braucht dann keine Forms entfernen usw.

              b) was soll der Try/catch Block?

              c) klar kommt ein Fenster hoch, wenn es auch gleich wieder weg ist. Hast du etwas komplexeres zu erledigen, als eine Datei anlegen, dauert es länger

              insofern leider keine Lösung
              Christian

              Comment


              • #8
                Originally posted by Christian Marquardt View Post
                a) erstellt man solche Anwendungen über den Konsolenexperten, da braucht dann keine Forms entfernen usw.
                Da hast du recht.

                Originally posted by Christian Marquardt View Post
                b) was soll der Try/catch Block?
                Der ist übrig vom dem vom BCB generierten Code, kann aber weg. Wie gesagt, der Code ist nicht optimiert.

                Originally posted by Christian Marquardt View Post
                c) klar kommt ein Fenster hoch, wenn es auch gleich wieder weg ist. Hast du etwas komplexeres zu erledigen, als eine Datei anlegen, dauert es länger
                insofern leider keine Lösung
                Tut mir leid, das kann ich nicht bestätigen, denn auch wenn ich da etwas Komplexes reinschreibe (eine Schleife, die länger dauert) erscheint bei mir (BCB 6, Windows XP) kein Fenster.
                Mit freundlichen Grüßen,
                Freiheit
                ---
                //don't question it ... it's clearly an optimization
                ---
                lafin.de lanmonitor.de

                Comment


                • #9
                  Tut mir leid, das kann ich nicht bestätigen, denn auch wenn ich da etwas Komplexes reinschreibe (eine Schleife, die länger dauert) erscheint bei mir (BCB 6, Windows XP) kein Fenster.
                  hmmmm, werde ich mal eruieren.
                  Christian

                  Comment


                  • #10
                    jaaa, stimmt das hängt davon ab, ob man im Dialog "Konsolenanwendung" ankreuzt oder nicht. Guter Hinweis.

                    Weiss leider nicht hinhaut ist die "kleine Größe". Das gilt nur, wenn die Laufzeit-Packages aktiviert sind. Somit braucht das Programm die rtl100.bpl. Ohne die Laufzeitpackages kann ich es nicht linken??
                    Christian

                    Comment


                    • #11
                      Schön, dass es funktioniert

                      Die 208 KiByte erreiche ich definitiv, wenn ich als Standalone-Exe kompiliere (mit den paar geposteten Zeilen plus einer einfachen For-Schleife, die ein paar Integer addiert), hab's gerade noch mal auf einer jungfräulichen virtuellen Maschine getestet und es läuft.
                      Ohne TStringList werden's sogar nur 156 KiByte.

                      Warum sich dein Compiler zu linken weigert, kann ich mir allerdings nicht erklären.
                      Mit freundlichen Grüßen,
                      Freiheit
                      ---
                      //don't question it ... it's clearly an optimization
                      ---
                      lafin.de lanmonitor.de

                      Comment

                      Working...
                      X