
Ich habe eine bereits gestartete Konsolenanwendung unter Windows XP. Ich möchte sie an einen anderen Konsolenemulator anhängen, wie zum BeispielKonsole2oderConEmu. Das istmöglich mit ConEmu, und es funktioniert, wenn ich ConEmu ausführe, dann seinen Menüeintrag „Anhängen an“ verwende und meine Konsolenanwendung in der Liste auswähle.
Ich versuche nun, dies zu automatisieren. Ich möchte das Fenster der Konsolenanwendung fokussieren, eine Taste drücken und es an eine neue Instanz von ConEmu anhängen können. Ich habe versucht, einAutoHotKeyMakro zum Anhängen der aktuell fokussierten Konsolenanwendung, wenn ich Win+ drücke A, aber ich kann nicht herausfinden, wie ich es verwenden kann ConEmuC
. Hier ist mein Versuch:
#IfWinActive, ahk_class ConsoleWindowClass
#a::
WinGet, app_pid, PID
Run c:\opt\ConEmu-120704\ConEmu.exe /detached, , , conemu_pid
Run c:\opt\ConEmu-120704\ConEmu\ConEmuC.exe /ATTACH /PID=%app_pid%
Return
Ich erhalte lediglich das folgende Fehler-Popup:
Attach to GUI was requested, but there is no console processes! c:\opt\ConEmu-120704\ConEmu\ConEmuC.exe /ATTACH /PID=7104
Wenn ich jedoch den Menüeintrag „Anhängen an“ in der ConEmu-Instanz verwende, wird die Konsolenanwendung angehängt. Ich muss das Kontrollkästchen „Alternativmodus“ aktiviereneingeführt in Version 120704, falls das relevant ist.
Wie verwende ich ConEmuC
(oder eine andere Methode), um eine vorhandene Konsolenanwendung an eine neue ConEmu-Instanz anzuhängen? Oder noch besser: Wie hänge ich eine vorhandene Instanz an (wenn ich eine neue Instanz möchte, kann ich sie einfach vorher erstellen)? Und wie gebe ich den alternativen Modus an?
Antwort1
Versuche Folgendes
#IfWinActive, ahk_class ConsoleWindowClass
#a::
WinGet, app_pid, PID
Run c:\opt\ConEmu-120704\ConEmu\ConEmuC.exe /ATTACH /CONPID=%app_pid%
Return
Alternativer Modus: /ATTACH /CONPID=<pid>
.
Ein Starten ConEmu.exe /detached
ist nicht erforderlich. Die GUI wird automatisch gestartet, wenn sie nicht gefunden wird.
UPD. Build 120705. Wenn Sie unbedingt ein neues ConEmu-Fenster starten möchten, können Sie Argumente /GHWND=NEW
hinzufügen .ConEmuC
Aktualisierung 2. Andererseits, vielleicht müssen Sie das Attach
gar nicht tun? Es gibtStandardterminalFunktion, mit der Sie ConEmu automatisch „anstelle“ des Standard-Windows-Terminals ausführen können, wenn Sie eine beliebige Konsolenanwendung ausführen.