Visual C++ cmd und keine main...



  • Ich bräuchte aber eine konsole...
    Da ich mit "system( progaufruf );" und dieses Programm ein printf hat, welches ich auslesen müsste, das ist nämlich ein Status, und den müsstei ch dann verwenden.. Ist das machbar?



  • lippoliv schrieb:

    Ich bräuchte aber eine konsole...
    Da ich mit "system( progaufruf );" und dieses Programm ein printf hat, welches ich auslesen müsste, das ist nämlich ein Status, und den müsstei ch dann verwenden.. Ist das machbar?

    Das printf kannst du nicht über den system-Befehl auslesen. Dafür brauchst du Pipes (such mal im Internet). Dann geht das auch mit der GUI-Anwendung problemlos.



  • In deinem Code fehlt

    #include <stdio.h>
    #include <process.h>
    

    Präprozessor-Defines sind für Konstanten nicht wirklich angebracht. Für bool gibt es stdbool.h , die man auch einem VC++ 6.0 noch beibringen kann:

    stdbool.h

    #ifndef _STDBOOL_H
    #define _STDBOOL_H
    
    typedef int _Bool;
    
    #define bool _Bool
    #define true 1
    #define false 0
    #define __bool_true_false_are_defined 1
    
    #endif
    

    Aja: Was ist dein Problem?

    greetz, Swordfish



  • Hey Danke für die Antworten.

    @Swordfish: was bringen mir die beiden? process.h soll ja angeblich für threads sien, aber es geht ja auch ohne...

    Die .h soll ich selbst schreiben ja? Ich kann die aus MinGW auch übernehmen oder?

    @ProgChild Ich will kein printf übe ienen Systembefehl auslseen.Ich will über system ein Programm starten, was etwas tut, ein printf ausgibt und wieder tot ist, die so entstandene ausgabe will ich lesen..

    Mein Problem ist:
    Wenn ich das mit VC++ 6 mache, habe ich kein Konsolenfenster oder? Ist es da nur versteckt?



  • lippoliv schrieb:

    @ProgChild Ich will kein printf übe ienen Systembefehl auslseen.Ich will über system ein Programm starten, was etwas tut, ein printf ausgibt und wieder tot ist, die so entstandene ausgabe will ich lesen..

    Wie gesagt: Such mal im internet nach Pipes. Vom prinzip her läuft das so: Du startest das Programm mit einem speziellen Befehl. Dann hast du eine Funktion, die dir die Ausgabe von dem gestarteten Programm liefert. Das funktioniert meistens wie, als wenn du aus einer Datei rauslesen würdest. Ich kann dir nur die Befehle nicht sagen, da ich nicht unter Windows programmiere. Du musst also selber suchen.

    lippoliv schrieb:

    Mein Problem ist:
    Wenn ich das mit VC++ 6 mache, habe ich kein Konsolenfenster oder? Ist es da nur versteckt?

    Das ist kein Problem dabei.



  • @ProgChild: Köntest du noch sagen wieso da kein Problem dabei ist?

    Danke, ich aheb eben im ersten Post von dir nicht verstanden was mir Pipes bringen üwrden, jetzt weiß ichs natürlich. Ich kenne Pipes, aber eine frage:

    Ich starte GUIfN.exe per hand.
    Klicke auf senden
    programm ruft NaDiA auf und sendet eine nachricht

    Kann bei system jetzt alles in mein (schon laufendes) prog gepiped werden? Im grunde dürfte das ja ein Problem sein oder? Weil da bekomm ich ja kein argv mehr..

    Ich könnts doch einfach in STDOUT pipen, undvon da auslesen.. geht das?



  • lippoliv schrieb:

    @Swordfish: was bringen mir die beiden? process.h soll ja angeblich für threads sien, aber es geht ja auch ohne...

    stdio.h für sprintf( )
    process.h für _beginthread ( ex ) ( )

    lippoliv schrieb:

    Die .h soll ich selbst schreiben ja? Ich kann die aus MinGW auch übernehmen oder?

    Mensch, hab' ich 'ne Kristallkugel? Woher soll ich jetzt auf die schnelle Wissen, wie die stdbool.h vom MinGW aussieht!? Warum denkst du, hab' ich dir eine geschrieben? Für VC++ 6.0?

    lippoliv schrieb:

    @ProgChild Ich will kein printf übe ienen Systembefehl auslseen.Ich will über system ein Programm starten, was etwas tut, ein printf ausgibt und wieder tot ist, die so entstandene ausgabe will ich lesen..

    Tja. "Ich will über system..." und "...ausgabe will ich lesen" verträgt sich nicht. ➡ Creating a Child Process with Redirected Input and Output

    lippoliv schrieb:

    Mein Problem ist

    ...daß du Beratungsresistent scheinst...

    lippoliv schrieb:

    Wenn ich das mit VC++ 6 mache, habe ich kein Konsolenfenster oder? Ist es da nur versteckt?

    ...und voreingenommen bist: Konsolenfenster bekommst du immer ( AllocConsole ), nur bringts dir nix.

    greetz, Swordfish



  • @Swordfish: Ich suche einen weg wie ich etwas machen kann, dann fällt mir ein dass ich mit einem Befehl eine sache starten kann, und das man aus einer Konsole lesen kann...

    So war für mich das problem geklärt.

    Das ging nicht ok, ich muss mir dann was anderes einfallen lassen, ich hatte keine ahnung das es eine CreatePipe funktion gibt, die Pipes die ich bis jetzt kenne sind von der CDM "prog name | prog name 2 | prog name 3....".

    Aber danke das du mir das so freundlich beigebracht hast, und das du es drauf hast, während dem zeigen ienes lösungsweges gleich irgendwelche behauptungen aufzustellen...

    Ich meine kann ich alles wissen, also z.B. das es eine möglichkeit gibt im Programm eine pipe zu erstellen?
    Ich will ja beraten werden, und ich nehme vorschläge auch liebend gerne an, allerdings bin ich nich der pro-super-prog-king...

    Just be friendly 😉



  • Sorry, ich bin heute irgendwie mit dem linken Fuß aufgestanden ... und dann noch die Frage wg. MinGW-Header ... das war zu viel.

    Entschuldige.

    greetz, Swordfish



  • Danke... Aber ist nicht soo schlimm, wollt nurmal drauf hinweisen, dass ich immer noch anfänger bin 😉

    Danke übrigens ich habe mir den code angesehen, und zu testzwecken per Copy&Paste gearbeitet, damit ich alles umschreiben kann, und gut sehe.
    Jetzt funktionierts mit dem programm.

    Ich werde mich jetzt ransetzen alles zu verstehen, da mir noch ein wenig unklar ist, allerdings wird MSDN mir da sicher helfen.


Anmelden zum Antworten