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 FunktionenGetCommandLine
undCommandLineToArgvW
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.
-
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..
-
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..