An *.exe mehrere Parameter übergeben!?



  • Hallo,

    kann mir jmd erklären, wie ich einer fertigen .exe einen oder mehrere Parameter in die MAIN übergeben kann?

    Konnte unter Google und sonstiger Suche nichts finden!

    Hier ein Auszug meiner exe:

    #include<iostream>
    #include<stdio.h>
    
    using namespace std;
    
    //--Prototypendeklaration
    void tmperstellungFTP_DB(char*);
    void tmperstellungDB_FTP(char*);
    bool uebergabe(char*, char*);
    
    //--MAIN
    int main(char* dateiname, bool ftp_db, char* ip)
    {
        //--Hier muss der von DB erstellte Dateiname an einen string übergeben werden
        char file[15]=dazeiname;  //=Übergabewert von DB also {dateiname}
        char ip[16]=ip;           //=Übergabewert von DB also {dateiname}
        bool ftp_db=false;        //-Übergabewert von DB (zweiter Übergabeparameter) ob get=true oder put=false) 
    
        if(ftp_db==true)
            tmperstellungFTP_DB(file);
        else if(ftp_db==false)
            tmperstellungDB_FTP(file);
    
        //uebergabe(ip,file);    
    
        if(uebergabe(ip,file))
        {
            cout<<"Erfolg";
            system("pause");
        }    
        else
        { 
            cout<<"kein Erfolg";
            system("pause");
        }    
    
        //--Löschen der TEMP-Datei
        system("del s:\\****\\ftp.tmp");   
    
        return(0); 
    }   
    
    //--Funktionsanweisungen
    /*
    */
        bool uebergabe(char* ip, const string& file)
        {
    
            char pfad[200]={"ftp -v -s:s:\\*****\\ftp.tmp "};
    
            strcat(pfad,ip);
    
            system(pfad);
    
            ifstream filetest(file.c_str());        
            return filetest.is_open();
        }
    

    Wie bekommt jetzt meine MAIN den "dateinamen", die "ip" und den boolschen Wert???

    Vielen Dank



  • in dem fall muss main so (ungefähr) aussehen

    int main(int argc, char *argv[])
    

    in argc sind die anzahl der parameter gespeichert und argv array sind die parameter zu finden. müsste eigentlich im jedem guten tutorial zu finden sein.
    links findest du oben rechts



  • miller_m schrieb:

    müsste eigentlich im jedem guten tutorial zu finden sein.
    links findest du oben rechts

    ...auch hier im Forum: http://www.c-plusplus.net/forum/viewtopic-var-t-is-153374.html



  • btw: so sieht vl deine *.cpp aus aber NICHT die *.exe ... 😉



  • .filmor schrieb:

    miller_m schrieb:

    müsste eigentlich im jedem guten tutorial zu finden sein.
    links findest du oben rechts

    ...auch hier im Forum: http://www.c-plusplus.net/forum/viewtopic-var-t-is-153374.html

    Vielen Dank!

    Schlecht wenn man net genau weiß wonach man suchen muss!
    Am Schluss hab ichs dann aber noch hinbekommen!!! *jippii*



  • Hallo mal wieder,

    jetzt hat sich da etwas ergeben:

    Ich habe folgenden VB Code:

    Public Function ShellX( _
        ByVal PathName As String, _
        Optional ByVal WindowStyle As VbAppWinStyle = vbMinimizedFocus, _
        Optional ByVal Events As Boolean = True _
      ) As Long
    
      'Deklarationen:
      Const STILL_ACTIVE = &H103&
      Const PROCESS_QUERY_INFORMATION = &H400&
      Dim ProcId As Long
      Dim ProcHnd As Long
    
      'Prozess-Handle holen:
      ProcId = Shell(PathName, WindowStyle)
      ProcHnd = OpenProcess(PROCESS_QUERY_INFORMATION, True, ProcId)
    
      'Auf Prozess-Ende warten:
      Do
        If Events Then DoEvents
        GetExitCodeProcess ProcHnd, ShellX
      Loop While ShellX = STILL_ACTIVE
    
      'Aufräumen:
      CloseHandle ProcHnd
    
    End Function
    

    Eine von mir erstellte EXE wird an einer anderen Stelle erfolgreich ausgeführt und arbeitet auch richtig!

    ShellX("S:\******\uebergabe.exe " & pfad1 & " " & pfad2 & " " & strIP & " false", vbHide)
    

    Also, wie gesagt, das ganze funktioniert sehr gut!
    Jetzt aber folgendes Problem:

    Die "SHELLX" bekommt den Returnwert der uebergabe.exe nicht zugewiesen!
    Was fehlt mir, damit die "Main" der uebergabe.exe den zurückliefernden Wert auch wirklich übergibt???

    Vielen Dank


Anmelden zum Antworten