Aufruf eines Konsolenprogrammes



  • Hallo Gemeinde,

    ich habe ein Problem beim Aufruf meines C++ Programmes.

    Ich möchte mit Hilfe eines Programmes wie folgt mein Programm aufrufen:

    meinProgramm.exe Dateiname im Stringformat (z.B. meinProgramm.exe C:\a.txt)

    Soweit so gut. Nur weiß ich nicht wie ich in meinem Programm diesen Aufruf verarbeiten kann.

    Hier der Code-Snippet meines "Empfänger" Programmes:

    #include <windows.h>

    extern "C"{
    int begin(char *fname);
    };

    int _tmain(int argc, _TCHAR* argv[])
    {
    begin("Hier soll der Dateiname rein.");
    return 0;
    }

    Hat jemand eine Idee?

    Danke.

    Gruß



  • system ("meinProgramm.exe C:/a.txt");
    


  • Hy devkid,

    danke für deine Antwort.

    Wie der Aufruf funktioniert weis ich. Ich möchte aber wissen wie ich diesen Aufruf im Empfänger Programm (siehe Snippet) verarbeiten kann.

    Danke.

    Gruß



  • Meinst du, wie du den Paramter (Dateiname) herausfinden kannst? Der liegt in argv :

    if (argc > 1)
        begin (argv [1]);
    


  • devkid schrieb:

    Meinst du, wie du den Paramter (Dateiname) herausfinden kannst? Der liegt in argv :

    if (argc > 1)
        begin (argv [1]);
    

    nee ... das ist mir klar. ich habe nur das Problem, das der Parameter für begin vom Typ char * ist und argv _TCHAR* ist.

    Und das funktioniert irgendwie net ganz ... 😞 Wie ich quasi den Parameter argv für meinen begin Aufruf verwenden kann.

    Hab mich denk ich nur falsch ausgedrückt 🙄



  • Keiner mehr einen Rat???



  • Stell dein Projekt auf "Nicht Unicode" um (Projekt Einstellungen > Allgemein > Character Set).

    Alternativ kannst Du auch wchar_t* bzw. TCHAR* in char* Konvertieren, z.B. mit CT2A(argv[1])... weiss den zugehörigen Header grad nicht (ev. <atlbase.h>

    Simon



  • Habs selber gelöst. Hab den Einstiegspunkt auf mainACRTStartup geändert. Nun klappt alles ohne konvertieren zu müssen.

    Gruß



  • Wenn ich grad mal noch eine Frage anhängen darf 🙂

    Gibts eine einfache Möglichkeit (MS Funktion) Pfadangaben mit Leerzeichen bei mehreren Aufruf Parametern in den Griff zu bekommen ?

    Also z.b. : MeinProg.exe /E c:\program files\test\datei.txt /S info

    Danke,
    gruß
    Marcus


  • Mod

    "Anführungszeichen !" ?



  • Wird dass "automatisch" als ein Argument gesehen, also argv[n] = "aa bb cc" oder muß ich da "von Hand" nach den Anführungszeichen suchen und zusammensetzen ?

    Ich werds mal testen.

    Danke.



  • meinProgramm.exe test "bla blub"
    

    ➡

    argv [0] = "meinProgramm.exe"
    argv [1] = "test"
    argv [2] = "bla blub"
    

Log in to reply