Kommandozeile ausführen



  • Ich möchte ne Kommandozeile als eigenen Prozess starten. Und zwar genaus wie mit system, also nicht getrennt nach Pfad, Programmname und Parameter, wie in ShellExecute.

    Also so irgendwie:

    Funktion_die_ich_suche("c:\bla\meinprogramm /b /xyz");

    Hintergrund: Der Benutzer soll ne Befehlszeile eingeben, die dann ausgeführt wird. Ich will aber nicht Pfad und Parameter rausparsen müssen. Oder stell ich mich bei ShellExecute zu sehr an?



  • Päzisier Dir doch mal Dein Anliegen.
    Ansonsten wird bei jeder WinMain-Funktion der Paramter (LC)PSTR szCmdLine entsprechend als Kommandozeile übergeben, also z.B.:

    ...
    
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow);
    {
    if(strcmp(szCmdLine,"/option")==0)
    MessageBox(NULL,"Sie haben den Schalter /option gesetzt !","",0);
    
    return 0;
    }
    ...
    


  • ok, ich versuchs mal mit CreateProcess 😉



  • Gut geeignet für dein Vorhaben ist sicherlich WinExec. Diese Funktion ist halt veraltet, man sollte CreateProcess verwenden.

    Such's dir einfach aus. Ich kann mir nicht vorstellen, dass in zukünftigen Windowsversionen WinExec fehlen wird.



  • Eine nicht so gute aber auch vorhandene Methode wäre system(), des wäre dann genau das, was du in der cmd.exe (oder command) einegebn würdest.



  • Original erstellt von kartoffelsack:
    Und zwar genaus wie mit system, also nicht getrennt nach Pfad, Programmname und Parameter, wie in ShellExecute.

    system ist ihm schon bekannt, er sucht wohl eine WinAPI-Lösung.



  • Ich fürchte, um eine gute Konsole zu bauen kommste um das Parsen nicht herum. Was soll denn z.B. passieren, wenn der User "dir" schreibt?


Anmelden zum Antworten