2009-06-07 13 views
2

Ich bin auf der Suche nach einer Möglichkeit, eine cmd "Shell" in ein Formular einzubetten. Ich möchte eine C# basierte Anwendung erstellen, die als Terminal fungiert, besser als das Powershell-Fenster (keine Tabs) oder cmd (nichts). Starten Sie diese Interpreter einfach im Backend.Windows Terminal - Windows Form zum Einbetten cmd

Ich denke, MS hat nie daran gedacht. Irgendwelche Ideen was von Elementen könnte ich verwenden?

Danke, i/o

Antwort

2

, dass Sie Unternehmen keine triviale Aufgabe ist. Ich kenne ein Projekt (Console2), das im Grunde den Bildschirmpuffer des zugrunde liegenden Konsolenfensters abfragt und in seinem eigenen anzeigt. Sie werden sicherlich Probleme mit interaktiven Anwendungen wie Far und Ähnlichem haben, da sie (a) darauf angewiesen sind, Tastaturereignisse zu erhalten und (b) ihren Bildschirmpuffer zu manipulieren. Beides sind eklige Dinge, wenn Sie einen geeigneten Wrapper rund um die Konsolenfensterfunktionalität wünschen. Die Mauseingabe ist ebenfalls möglich (es sei denn, der Schnellbearbeitungsmodus ist aktiviert), was Ihnen weitere Kopfschmerzen bereiten könnte.

Ich bezweifle, dass Sie eine fertige Steuerung dafür verwenden können. Grundsätzlich müssen Sie ein Gitter von Zellen anzeigen, von denen jedes eine Vordergrund- und Hintergrundfarbe hat. Sie könnten wahrscheinlich eine RichTextBox dafür verwenden, aber ich denke, es ist alles andere als ideal.

Auch ich glaube nicht, dass niemand bei MS jemals darüber nachdachte. Es gibt nur ein begrenztes Budget für neue Funktionen und jeder von ihnen muss spezifiziert, implementiert, getestet und mehr auf Regressionen mit Millionen von Anwendungen da draußen getestet werden. Es ist nur eine verdammt teure Sache (wenn Sie nicht wollen Ihre Kunden als Tester missbrauchen, was sie nicht sind).

+0

[SuperUser: Wie PowerShell in Explorer oder Explorer-ähnliches Tool eingebettet werden?] (Http://superuser.com/a/441531/139371) – Maximus

0

Es wäre wahrscheinlich am einfachsten, die Textbox-Klasse zu erweitern und Logik hinzuzufügen, so dass sie sich wie eine Konsole verhält (reagieren auf die KeyPressed/KeyUp/KeyDown-Ereignisse oder ähnliches). Sie können auch Ereignisse für die Dinge hinzufügen, auf die Ihre Konsole reagieren muss. Fügen Sie beispielsweise ein CommandEntered-Ereignis hinzu.

Wenn Sie Ihre neue Konsole auf einer TextBox verwenden, erhalten Sie die Bearbeitungs- und Anzeigefunktionen der Textbox "kostenlos", so dass Sie diese nicht erneut implementieren müssen.

0

Sie könnten ein Richtextfeld verwenden und den Hintergrund auf Schwarz und den Vordergrund auf Weiß setzen. RTB anstelle von Textfeld, um größere Datenmengen zu verarbeiten. Sie müssten eine Menge Code schreiben, um das Terminal zu simulieren.