Wie kann ich das Standardprogramm ersetzen, das Konsolenfenster unter Windows XP bereitstellt?
Ich kenne alternative Programme und habe eine Verknüpfung, um cmd.exe
in Console2 zu starten . Jetzt möchte ich jedoch, dass Konsolenanwendungen in Console2 und nicht im Standardkonsolenprogramm gestartet werden, auch wenn ich keine Kontrolle über das Programm habe, mit dem die Konsolenanwendung gestartet wird. (Das heißt, ein Nicht-Konsolenprogramm wird gestartet consoleapp.exe
, und ich kann es nicht ändern, um stattdessen Console2 zu starten. Ich möchte jedoch, dass die Anwendung in einer neuen Instanz von Console2 gestartet wird.)
(Beachten Sie, dass ich die Konsole selbst ersetzen möchte, dh das Fenster, in dem Konsolenanwendungen (dh der Textmodus) ausgeführt werden. Außerdem muss ich in der Lage sein, beliebige, unveränderte Konsolenanwendungen auszuführen: ein Ersatz für ein bestimmtes Konsolenprogramm wie Cmd tut mir nicht gut.)
EDIT : Also, was ich will , ist ein CSRSS-Ersatz , der dazu führt
OT: Ich möchte wissen, wann Microsoft einen anständigen CSRSS-Ersatz vornehmen wird. Die Breite eines "Terminals" nicht durch Ändern der Fenstergröße anpassen zu können, ist ein Witz.
Laden Sie die ISE bereits herunter. (Es ist in Win7 / 2008R2 enthalten.)
Soweit ich weiß, ist diese ISE eine Umgebung für Powershell , kein allgemeiner Konsolenemulator.
quelle
Antworten:
Ich bin Autor von ConEmu - Windows Console Emulator. Eine seiner Funktionen ist das Erfassen vorhandener Konsolen oder einfacher GUI-Anwendungen auf der Registerkarte. Nachdem Sie das Konsolenprogramm in der Standardkonsole (CSRSS / ConHost) gestartet haben, können Sie:
Wählen Sie im ConEmu-Systemmenü den Eintrag "Anhängen ..." ( standardmäßig Win+ G) und wählen Sie das Fenster "Anhängen". Wenn ConEmu nicht gestartet wurde, können Sie es optional starten, ohne beim Start eine Konsole / einen Tab zu erstellen:
Oder führen Sie gegebenenfalls in der gestarteten Konsole den folgenden Befehl (ConEmu \ Attach.cmd) aus, der das Anhängen von der Konsolenseite aus initiiert. Beachten Sie, dass in diesem Fall ConEmu.exe (GUI) automatisch gestartet wird, sofern es noch nicht vorhanden ist.
Es gibt noch einen Weg. Ich denke, es entspricht nicht Ihren Anforderungen, aber ich werde es offenlegen. In der Registrierung befindet sich ein Schlüssel, dessen Inhalt cmd / tcc nach dem Start der Konsole ausgeführt wird. Während Sie anfangen
consoleapp.exe
, nichtcmd.exe
dieses Miss.Cmd_Autorun.cmd
In ConEmu Distribution befindet sich eine Datei zum Installieren / Deinstallieren dieses Befehls.Hier auf Superuser.com gibt es ein Tag
UPD . Build 120704. Alternativer nichtintrusiver Verbindungsmodus für Konsolenfenster.
UPD2 . Build 121128. Es ist beispielsweise möglich, die "Erstellung eines Konsolenfensters" aus bestimmten (vom Benutzer) Anwendungen abzufangen
explorer.exe,vcexpress.exe
. Lesen Sie mehr über diese aufdringliche experimentelle Funktion .quelle
consoleapp.exe
, erhalte ich die NachrichtConEmuC.X, PID=5656 Injecting remote into PID=5432 FAILED, code=-111:0x00000057
. Daconsoleapp.exe
es sich um ein Programm handelt, das ich debugge, lässt mich der Verdacht auf "Injecting Remote" vermuten, dass die von ConEmu verwendete Technik für mich niemals funktioniert. Ich kann nicht zulassen, dass "fremde" Programme das Programm, das ich debugge, stören.sh
direktes Aufrufen ; 2. Es sollte das Aufteilen des Fensters ermöglichen mehrere vertikale / horizontale Registerkarten und rufen Sie diese benutzerdefinierte Registerkartenanordnung beim Neustart auf.Das kannst du nicht. Win32-Konsolen verwenden immer die von CSRSS bereitgestellten integrierten Konsolenfenster.
quelle
csrss
inconhost.exe
. Leider ist es immer noch dieselbe alte Benutzeroberfläche, und soweit ich weiß, sind die APIs nicht dokumentiert. Mehr unter blogs.technet.com/b/askperf/archive/2009/10/05/…