Parameter an exe kommen nicht mehr durch



  • Hi,

    heute stelle ich fest, das Übergabe Parameter an executable nicht mehr übertragen werden ?

    In dem Falle nach InitInstance, selbst Parameter aus den VS- Einstellungen Debug parameter kommen nicht mehr durch.

    Verwendet wurde in MFC immer __targv[1] um den Parameter zu erlangen.
    z.B.

    CString Path; 
    	
    	if (__argc > 1) //Path given ?
    	{
    		Path.Format("%s", __targv[1]);
    
    		if (Path.IsEmpty())
    			Path = GetProfileString("Property", "LastSetup", "");
    		else
    		{
    			Path.MakeLower();
    
    			if (Path.Find(".set") == -1)
    				Path.Empty();
    
    			if (!CDlgExFiles::GetFileInfo(Path))//dont exists!
    				Path.Empty();
    
    			SelectDirectory(Path);
    		}
    	}
    

    Da muss sich etwas verändert haben, in den letzten 20 Jahren ging das so.

    Danke für Hinweise.
    Karsten aus Berlin.



  • @Achromat

    __argc sieht für mich schon sehr compilerspezifisch aus. Guck` dir mal an, was GetCommandLine zurückgibt. Du kannst mit den Windows API Funktionen GetCommandLine und CommandLineToArgvW auch die einzelnen Parameter bestimmen lassen.
    Falls möglich kannst du auch fertige Sachen wie boost::program_options benutzen, wenn das nicht zu aufwändig wird.


  • Mod

    Zudem gibt es die Klasse CCommandLineInfo in der MFC. Diese wird über ParseCommandLine gefüllt

    Also eigene Ableitung bilden von CCommandLineInfo
    In InitInstance dann:

    	CMyCommandLineInfo cmdInfo;
    	ParseCommandLine(cmdInfo);0
    

    Just the MFC way since years.



  • Hi,

    ja kenne ich natürlich, mit ParseCommandLine

    Aber auch das liefert null, das werte ich bisweilen erst bei InitInstance aus, hatte immer geklappt,
    scheinbar schon zu spät , da versuche ich es jetzt früher aufzurufen, hatte wie gesagt 20 Jahre keine Probleme gegeben.
    Danke der Hinweise, mal sehen wo der Fehler nun liegt...

    Gz
    Karsten



  • @Achromat Nee Nachtrag,

    auch bei InitAplication ist der zweite Param leer . der erste enthält den *.exe Path (__targv[0]), das hat also geklappt. Aber nicht mit ParseCommandLine hier alles null und empty.

    Was kann denn das nun wieder sein...
    Danke für Hinweise..


  • Mod

    Dann wird nix übergeben.
    Schau Dir den Task im TaskManager an. Dort kannst Du in den Details die Befehlszeile sichtbar machen.



  • Oh mein Gott.. es war nicht das Startprojekt..

    alter Schwede, man wird alt..

    Sorry für den Aufruhr ^^

    omg..


Log in to reply