Ersetzen des Standard-Konsolenemulators unter Windows XP

3710
Gilles

Wie kann ich das Standardprogramm mit Konsolenfenstern unter Windows XP ersetzen?

Ich kenne alternative Programme und habe eine Verknüpfung, um cmd.exein Console2 zu starten . Aber jetzt möchte ich, dass Konsolenanwendungen in Console2 statt mit dem 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, aber ich möchte trotzdem, 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 die Konsolenanwendungen (dh der Textmodus) ausgeführt werden. Außerdem muss ich beliebige, nicht veränderte Konsolenanwendungen ausführen können: ein Ersatz für ein bestimmtes Konsolenprogramm, z. B. Cmd.) tut mir nicht gut.)

EDIT : Was ich also suche, ist ein CSRSS-Ersatz, der dazu führt

OT: Ich möchte wissen, wann Microsoft einen anständigen CSRSS-Ersatz herstellt. Nicht in der Lage zu sein, die Breite eines "Terminals" durch Ändern der Fenstergröße anzupassen, ist ein absoluter Witz.

Laden Sie die ISE bereits herunter. (Es ist in Win7 / 2008R2 enthalten.)

Soweit ich weiß, ist ISE eine Umgebung für Powershell, kein allgemeiner Konsolenemulator.

11
Der in Ihrem neuen Angebot erwähnte Mangel gilt nicht für CMD, wenn er in Console2 (IIRC) ausgeführt wird. paradroid vor 14 Jahren 0
@ jason404: Ja, aber wenn Sie beispielsweise auf eine Batchdatei doppelklicken, wird sie nicht in Console2 geöffnet. Bei solchen Instanzen müssen Sie möglicherweise die Befehlszeilen-Shell ersetzen. Ich finde es eine großartige Frage, +1. Sasha Chedygov vor 14 Jahren 0
Kann "stecken" der std-Konsole in die neue Registerkarte des Konsolen-Emulators passen? Manuelles Anhängen, meine ich. Maximus vor 12 Jahren 0
@ Maximus Ich verstehe nicht, worauf Sie sich beziehen. Mit "Standardkonsole" meinen Sie CSRSS? Wo ist das "Attachment"? Gilles vor 12 Jahren 0
ConEmu kann eine beliebige "echte Konsole" (CSRSS, ja) oder einfache GUI-Anwendungen in seine Registerkarte einbinden. Die Verbindung kann manuell über die ConEmu-Schnittstelle oder über einen speziellen Befehl in der Konsole (falls vorhanden) ausgeführt werden. Maximus vor 12 Jahren 0
@ Maximus Ich hatte noch nie zuvor von ConEmu gehört (ich denke, Sie meinen dies (http://sourceforge.net/projects/conemu/))? Danke, ich werde es das nächste Mal ausprobieren, wenn ich auf einem Windows-Computer bin. Gilles vor 12 Jahren 0
@ Maximus Wenn ConEmu mein Problem lösen kann, dann bitte eine Antwort posten. Es ist in Ordnung, eine Antwort zu Ihrem eigenen Produkt zu posten, solange Ihr Beitrag die Frage wirklich beantwortet und Sie angeben, dass Sie der Autor sind (siehe die [faq # promotion]). Gilles vor 12 Jahren 0

2 Antworten auf die Frage

9
Maximus

Ich bin ein Autor von ConEmu - Windows Console Emulator. Eine der Funktionen ist das Erfassen von Tabs auf vorhandenen Konsolen oder einfachen GUI-Anwendungen. Nach dem Starten des Konsolenprogramms in der Standardkonsole (CSRSS / ConHost) können Sie also Folgendes tun:

  • Wählen Sie im ConEmu-Systemmenü den Eintrag "Anhängen ..." ( Win+ Gstandardmäßig) und wählen Sie das Fenster zum Anhängen. Wenn ConEmu nicht gestartet wurde, können Sie es optional starten, ohne beim Start eine Konsole / Registerkarte zu erstellen:

    C:\Tools\ConEmu.exe /detached 
  • Führen Sie gegebenenfalls in der gestarteten Konsole den folgenden Befehl (ConEmu \ Attach.cmd) aus, der das Anfügen von der Konsolenseite aus initiiert. Beachten Sie, dass in diesem Fall ConEmu.exe (GUI) automatisch gestartet wird, falls noch nicht vorhanden.

    ConEmuC.exe /ATTACH /NOCMD 
  • Es gibt einen weiteren 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 Starten der Konsole ausgeführt wird. Während Sie anfangen consoleapp.exe, nicht cmd.exedieses Miss. Es gibt eine Cmd_Autorun.cmdDatei in ConEmu distrib, um diesen Befehl zu installieren / deinstallieren.

    [HKEY_CURRENT_USER\Software\Microsoft\Command Processor] "AutoRun"="\"<Command to be executed>\""  

Es gibt hier ein Tag auf Superuser.com

UPD . Erstellen Sie 120704. Alternativer nichtintrusiver Verbindungsmodus für Konsolenfenster.

ConEmu attach external console dialog

UPD2 . Build 121128. Es ist möglich, die "Erstellung eines Konsolenfensters" beispielsweise von (durch Benutzer) festgelegten Anwendungen abzufangen explorer.exe,vcexpress.exe. Lesen Sie mehr über diese aufdringliche experimentelle Funktion .

Sieht vielversprechend aus, aber es funktioniert nicht für mich (ich denke, es könnte für andere funktionieren). Wenn ich versuche, "consoleapp.exe" anzuhängen, erhalte ich die Meldung "ConEmuC.X, PID = 5656 Injizieren von Remote in PID = 5432 FAILED, Code = -111: 0x00000057". Da es sich bei 'consoleapp.exe' um ein Programm handelt, das ich debugge, erwecke ich die Vermutung, dass die von ConEmu verwendete Technik für mich niemals funktionieren wird. Ich kann nicht zulassen, dass "fremde" Programme das Programm stören Debuggen Gilles vor 12 Jahren 0
Versuchen Sie es mit Build 120704. Möglicherweise funktioniert der alternative Modus für Sie. Maximus vor 12 Jahren 0
Bau 120704 mit Alternativmodus funktioniert, danke. Wenn ich den Standard-Konsolenemulator nicht ersetzen kann, ist das Anschließen an einen besseren Emulator nach dem Starten der Anwendung besser als nichts. [Ich kann nicht herausfinden, wie es mit einem Tastendruck ausgeführt werden kann] (http://superuser.com/questions/445394/attach-a-running-console-application-to-a-new-conemu-instance) . Gilles vor 12 Jahren 0
@ Maximus: Ich kann nicht umhin, deine großartige Arbeit nicht zu empfehlen. Ich benutze selten Windows, bin aber manchmal dazu gezwungen, und wenn ich es bin, brauche ich die Integration von Cygwin oder Msys. Während Console2 die schönste Lösung hatte, die ich bisher gesehen habe, war es etwas klobig. ConEmu ist sehr nett, aber ich wünsche mir zwei Dinge: 1. Es sollte eine bessere Unterstützung für Profile bieten, dh es sollte einen Manager zum Speichern / Löschen von benutzerdefinierten Konsolenprofilen haben (z. B. direktes Aufrufen von 'sh'; 2. es sollte das Aufteilen ermöglichen Das Fenster befindet sich in mehreren vertikalen / horizontalen Registerkarten und ruft beim Neustart diese benutzerdefinierte Tab-Anordnung auf. axel22 vor 12 Jahren 0
@ axel22: Sie können Wünsche an [ConEmu Issues] (http://code.google.com/p/conemu-maximus5/wiki/Issues?tm=3) senden. 1. Es gibt bereits Profile. 2. In der Roadmap. Maximus vor 12 Jahren 0
1
grawity

Du kannst nicht Win32-Konsolen verwenden immer die von CSRSS bereitgestellten integrierten Konsolenfenster.

Danke, jetzt weiß ich, was ich suche, ist ein CSRSS-Ersatz. Gilles vor 14 Jahren 0
@ Gilles: Viel Glück damit. (Tatsächlich wurde unter Windows 7 ein Großteil seiner Funktionalität in den Kernel verschoben, es bleibt jedoch ein "kritischer Prozess", der Kern des Win32-Subsystems und all das ist.) grawity vor 14 Jahren 0
@ Gilles: Dann benutze eine andere Schale, wie ich schon sagte. Die Win32-Konsole ist nur der Standard-Windows-Terminalemulator. paradroid vor 14 Jahren 0
@ jason404: Und wie Gilles gesagt hat, ist es nicht die _shell_ (cmd.exe), sondern der _console_ (Terminal-Emulator), den er ersetzen möchte, so dass jedes Programm, das Konsolenfenster verwendet, den Ersatz verwenden würde. grawity vor 14 Jahren 1
Die Windows 7-Implementierung des Konsolenfensters wurde aus `csrss` in` conhost.exe` verschoben. Leider ist es immer noch dieselbe alte Benutzeroberfläche, und soweit ich weiß, sind die APIs nicht dokumentiert. Weitere Informationen finden Sie unter http://blogs.technet.com/b/askperf/archive/2009/10/05/windows-7-windows-server-2008-r2-console-host.aspx ak2 vor 14 Jahren 2
@ ak2: Also, das ist, warum sie Ewigkeiten brauchen, um sich zu öffnen. grawity vor 14 Jahren 0