Wie erstelle ich eine Shell?

8

Wie macht man eine Schale?
-Das kann Konsolenanwendungen wie FAR Manager mit den Farben und allen ... ausführen Das Umleiten der Konsolenausgabe scheint nicht genug zu sein.
- PowerShell scheint es zu tun, ohne cmd.exe zu verwenden.

Das Endspiel wäre, eine grafische Shell zu erstellen (ohne die Standardkonsole zu verwenden).
Von dem, was ich gesammelt habe, müsste ich nicht nur die Konsolen-IO abrufen, sondern die Aufrufe an die Win32Api über die Konsole abfangen (wie WriteConsoleOutput, SetConsoleCursorPosition, ...)

    
CiNN 27.12.2009, 16:12
quelle

4 Antworten

3

Im einfachsten Fall ist eine Shell einfach ein Programm, das eine Befehlszeile liest und dann den Befehl ausführt, den der Benutzer mit einer der exec () - Funktionsfamilien eingegeben hat. Wenn Sie die I / O-Umleitung unterstützen wollen, müssen Sie ein wenig mehr Arbeit an der Analyse des Befehls erledigen, aber es ist nicht unmöglich schwierig - das Schreiben einer einfachen Shell wird oft als Programmierungsübung für Anfänger festgelegt.

    
anon 27.12.2009 16:52
quelle
1

Ich bin mir nicht sicher, aber was Sie denken, sind die Win32-Konsolen-APIs. Das müssen Sie aufrufen, um mit dem Konsolenfenster im Zeichenmodus zu interagieren.

Wenn Sie möchten, dass etwas Shell-ähnliches kein Konsolenfenster ist, dann müssen Sie etwas über Win32-Pipes und die CreateProcess API erfahren. Sie verwenden die Pipes zum Erfassen der Ausgabe und zum Eingeben der Eingabe.

Wenn Sie GUI-Apps mischen möchten, dann haben Sie einen gigantischen Job vor sich, wenn Sie wirklich wollen, dass ihre Fenster im Fensterbaum Ihrer App erscheinen.

    
bmargulies 27.12.2009 17:01
quelle
0

Die meisten DOS-Anwendungen mit einer grafischen Benutzeroberfläche funktionieren nicht, wenn Sie die Ausgabe und Eingabe einfach abfangen (umleiten). Diese Programme, die direkt auf die Videohardware schreiben oder DOS-Interrupts verwenden, müssen in einem Konsolenfenster ausgeführt werden, wenn Sie Windows verwenden. Die Windows-Konsole emuliert ausreichend die DOS-Umgebung, so dass diese Arten von Programmen ordnungsgemäß funktionieren.

Wie Neil Butterworth bereits erwähnt hat, sollten Sie eine der exec-Funktionen verwenden, um Programme zu starten. Für DOS-Programme ist nichts besonderes erforderlich: Das Betriebssystem erkennt das Programm, wenn es sich um ein Windows-Programm oder ein Konsolenprogramm handelt.

    
jdigital 27.12.2009 17:46
quelle
0

Ein vollständiges, aber komplexes Beispiel für eine interaktive Shell ist in Microsofts F # -Verteilung . Der Code für die F # Interactive-Shell (FSI) befindet sich im Ordner C: \ Programme \ FSharp-1.9.7.8 \ source \ fsharp \ Fsi.

Ein weiteres Beispiel in C ist als Teil der TCL-Verteilung verfügbar. Der Code, der die TCL-Befehlsshell implementiert, befindet sich im Ordner \ win.

    
Chris R. Timmons 27.12.2009 18:06
quelle

Tags und Links