Parameter bei Programmstart
-
versuchs mal mit:
"Name.exe" auto
Bei mir hat es so geklappt...
-
@dEUs:
Ja von dem Programm das aufgerufen wird.@EnERgYzEr:
Wie meinst du das ?Ach ja übrigens in cmdStart.m_strFileName steht das richtige drin, je nachdem wie das Prog aufgerufen wird. (also "auto" oder <<leer>>).
-
Da is eines zuviel

-
semiklonjäger schrieb:
Da is eines zuviel

???
EDIT:
Achso, naja das ist aber nicht der Fehler.
-
Zeig mal bitte wie Du Dein Programm startest.
ShellExecute ? WinExec ?
-
Naja normalerweise mit ShellExecute.
Zum ausprobieren hab ich es jetzt aber mal so gemacht.1.) Start-> Ausführen
2.) C:\Settings.exe autoEs kommt bei beiden Methoden die oben genannte MessageBox.

-
Nun, das ParseCommandLine() geht streng nach den Vorgaben in der MFC vor (wie sehen die Parameter aus /p /dde usw.) und demnach ist Dein "auto" als Filename zu bewerten, der beim start göffnet wird. Da es aber kein solches File gibt, kann es nicht geöffnet werden und Du erhälst diese Fehlermeldung.
Das ProcessShellCommand() kümmert sich darum FileOpen aufzurufen!Jetzt hast Du 2 Möglichkeiten:
Du belässt es so, und prüfts ob in cmdInfo.m_strFilename "auto" drinsteht und machst dann Deine Funktion else ProcessShellCommand() (die ja wieder FileOpen versuchen würde)
oder
Du vergnügst Dich mit GetCommandLine() und CommandLineToArgvW() usw... und parst Dir Deine Commandline selber
-
Oder:
Du behandelst das Argument als FLAG (-auto).

-
@count.negativ
Da kommt ein Fehler beim Speicherzugriff in Adresse xxx.@Oli
bitte erklären, danke

-
Hehe habs gelöst:
CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); char c; CString s; cmdStart.ParseParam(&c,TRUE,TRUE); if(cmdInfo.m_strFileName != "auto") { AfxMessageBox("xyz"); PostQuitMessage(0); } cmdInfo.m_strFileName = "Name.exe";