Erweiterte cmdshell



  • Hi,

    ich moechte mir eine erweiterte Cmdshell bauen. Erweitert heisst in diesem Fall das ich eigene Cmds integrieren moechte die ich behandle und alles andere wird an cmd.exe weitergeleitet.

    Mein Ansatz waere jetzt einfach einen Process (cmd.exe) starten und die stdin/stdout/stderr in eine Pipe leiten. Aber woher weiss ich das das cmd abgearbeitet wurde und ich nicht mehr von der stdout/stderr Pipe lesen kann. Man koennte nach einer Line mit "%DIR_PATH%>" suche, aber das kann ja auch mal im output eines cmds stehen.

    Gibt es da eine Moeglichkeit oder sogar einen offizielen Weg die Cmdshell zu erweitern?

    Gruessle



  • Macht irgendwie keinen Sinn. Was willst du wirklich machen?



  • Gibt es da eine Moeglichkeit oder sogar einen offizielen Weg die Cmdshell zu erweitern?

    Eine Programm schreiben und dass in den Suchpfad der Kommandozeile kopieren ? Dann wird mit dem entsprechnenden Befehl dein Programm ausgeführt. Meinst du das ? 😕



  • DarkShadow44 schrieb:

    Gibt es da eine Moeglichkeit oder sogar einen offizielen Weg die Cmdshell zu erweitern?

    Eine Programm schreiben und dass in den Suchpfad der Kommandozeile kopieren ? Dann wird mit dem entsprechnenden Befehl dein Programm ausgeführt. Meinst du das ? 😕

    Ja genau nur halt das ich nicht fuer jedes Kommando ein eines Programm schreiben will sondern in einem.



  • Naja kommt drauf an wie viele Commands du hinzufügen willst 😉
    Klar, wenn du ne Menge Commands hinzufügen willst wär das Schwachsinn für jeden ein extra Programm zu machen.
    Klar du könntest CMD nachprogrammieren, aber wozu ?
    Spricht was dagegen für jeden Command eine Verknüpfung oder eine Wrapperbatch zu machen die den Command einfach an dein Programm weiterleitet ? So etwa:

    • command1.bat: "meinProgramm.exe -C1 %1 %2 %3"
    • command2.bat: "meinProgramm.exe -C2 %1 %2"

    Wäre das simpelste. 😃



  • DarkShadow44 schrieb:

    Naja kommt drauf an wie viele Commands du hinzufügen willst 😉
    Klar, wenn du ne Menge Commands hinzufügen willst wär das Schwachsinn für jeden ein extra Programm zu machen.
    Klar du könntest CMD nachprogrammieren, aber wozu ?
    Spricht was dagegen für jeden Command eine Verknüpfung oder eine Wrapperbatch zu machen die den Command einfach an dein Programm weiterleitet ? So etwa:

    • command1.bat: "meinProgramm.exe -C1 %1 %2 %3"
    • command2.bat: "meinProgramm.exe -C2 %1 %2"

    Wäre das simpelste. 😃

    Hmm ja von der Theorie spricht da nix dagegen, ich persoenlich finds aber einfach nicht schoen. Und ich will die cmd ja nicht nachprogrammieren sondern sie im hintergrund laufen lassen und alle commands die nicht bei mir implementiert sind einfach weiterleiten siehe ersten Post.

    Haette ja sein koennen das es da einen offizieln Weg gibt.
    Aber danke soweit fuer eure Antworten.

    Gruessle



  • stuxn schrieb:

    stdin/stdout/stderr in eine Pipe leiten. Aber woher weiss ich das das cmd abgearbeitet wurde und ich nicht mehr von der stdout/stderr Pipe lesen kann.

    Du startest aus Deinem Programm einen command-Prozess, der schließt die Pipe am anderen Ende, wenn er mit seiner Arbeit fertig ist.

    Guck mal hier rein, vielleicht kannst Du damit was anfangen:
    http://www.c-plusplus.net/forum/248213-full



  • Belli schrieb:

    stuxn schrieb:

    stdin/stdout/stderr in eine Pipe leiten. Aber woher weiss ich das das cmd abgearbeitet wurde und ich nicht mehr von der stdout/stderr Pipe lesen kann.

    Du startest aus Deinem Programm einen command-Prozess, der schließt die Pipe am anderen Ende, wenn er mit seiner Arbeit fertig ist.

    Guck mal hier rein, vielleicht kannst Du damit was anfangen:
    http://www.c-plusplus.net/forum/248213-full

    Hmm ja ist ist mir auch bewusst. Da ich aber eine erweiterte cmd bauen will und die Befehle die ich eingeben will ca 95% von der normal Shell sind moechte ich nicht fuer jeden Befehlt CreateProcess aufrufen.
    Aber wenns keinen anderen Weg gibt, werd ich es wahrscheinlich so loesen.

    Danke und Gruessle



  • Dann scheint mir aber wirklich der einfachste - und auch der naheliegendste - Weg zu sein, für Deine Commands jeweils ein eigenes Programm zu schreiben, und über die PATH - Variable erreichbar zu machen.



  • Belli schrieb:

    Dann scheint mir aber wirklich der einfachste - und auch der naheliegendste - Weg zu sein, für Deine Commands jeweils ein eigenes Programm zu schreiben, und über die PATH - Variable erreichbar zu machen.

    +1


Log in to reply