Shell für Win



  • Ich möchte meine eigene "Shell" für Windows schreiben.
    Die soll eigentlich erstmal nichts weiter können als "cd" und "ls"!

    Ich habe keine Ahnung wie ich das machen soll, kann mir jemand etwas hilfestellung geben?

    Ich habe mir mal den Sourcecode von einigen Shells runtergeladen, aber die sind 1. alle für UNIX und 2. zu umfangreich um sich was abzugucken

    Ich benutze VC6 -> Win32 Konsolenanwendung ... bin ich da überhaupt richtig?

    MfG,
    Scorp1on



  • Ich benutze VC6 -> Win32 Konsolenanwendung ... bin ich da überhaupt richtig?

    Nein, denn allein mit Standard-C++ wirst du da nicht weit kommen.
    Ich verschiebe dich erstmal ins Konsolenforum. Dort wird man dir sicher auch die WinAPI-Befehle die du für 'cd' und 'ls' (dir) benötigst sagen.



  • Das Ziel meines Projekts ist ein Programm zu entwickeln mit dem man Windows mehr oder weniger übers Netzwerk Administrieren kann (nur über Befehle alla Linux)...
    Soll erstmal ganz einfach gehalten werden, also keine Verschlüsselung der Daten und es soll wie gesagt nur eine "Reise" durchs Dateisystem mit cd und ls möglich sein!

    Brauche etwas Hilfe, denn ich weiss irgendwie nicht wo ich anfangen soll...mit Sockets habe ich schon programmiert, aber wie kann ich andere Consolenprogramme wie z.B. ping starten und den Output übers Netzwerk schicken etc.?

    Ich dachte ich müsste dafür erstmal wissen wie ich ne Console ohne Netzwerkanschluss programmiere...

    Hilfe 🙂



  • Ich könnte mir das so vorstellen: du schreibst ein normales Windows-Programm (WinAPI) mit nem großen Edit-Feld, was deine Konsole darstellen soll. Du öffnest von da aus eine Konsole (CreateConsole() oder so) und versteckst das zugehörige Konsolenfenster. Wenn in deinem EDIT-Feld die Return-Taste gedrückt wird, dann prüfst du erst, ob am Beginn des bestätigten Befehls eines deiner neuen Schlüsselwörter steht. Wenn nicht, dann leitest du die Kommandozeile an die Konsole weiter und lässt dir das "Ergebnis" (echo) in deinem EDIT per Pipe ausgeben. Wenn aber doch, dann musst du die eingegebene Komandozeile parsen. Das wird sicher verdammt kompliziert.



  • Prinzipiell sollte das nicht das allzugrosse Problem sein. Unter Windows hast Du sogar noch den Vorteil dass du keine Programme in den Hintergrund starten kannst wie unter den Unices mit &. Im Prinzip also 'ne Eingabe über cin einlesen, auswerten ("bist du 'cd' oder 'ls'?") und dann die entsprechenden Methoden zum wechseln des Verzeichnisses bzw. zur Auflistung der Dateien des aktuellen Verzeichnisses aufrufen. Beim Aufrufen von anderen Programmen wie ping etc. kannst du auf CreateProcess und ShellExecute zurückgreifen falls ich mich net täusche.


Log in to reply