
У меня уже запущено консольное приложение под Windows XP. Я хочу прикрепить его к другому эмулятору консоли, напримерКонсоль2илиConEmu. Этовозможно с ConEmu, и это работает, если я запускаю ConEmu, а затем использую пункт меню «Присоединить к» и выбираю свое консольное приложение в списке.
Я сейчас пытаюсь это автоматизировать. Я хочу иметь возможность фокусировать окно консольного приложения, нажимать клавишу и прикреплять его к новому экземпляру ConEmu. Я пытался написатьAutoHotKeyмакрос для присоединения текущего сфокусированного консольного приложения при нажатии Win+ A, но я не могу понять, как использовать ConEmuC
. Вот моя попытка:
#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
Я получаю следующее всплывающее окно с ошибкой:
Attach to GUI was requested, but there is no console processes! c:\opt\ConEmu-120704\ConEmu\ConEmuC.exe /ATTACH /PID=7104
Но если я использую пункт меню «Присоединить к» в экземпляре ConEmu, консольное приложение прикрепляется. Мне нужно поставить галочку напротив «альтернативный режим»введено в версии 120704, если это имеет значение.
Как мне использовать ConEmuC
(или любой другой метод) для присоединения существующего консольного приложения к новому экземпляру ConEmu? Еще лучше, как мне присоединить существующий экземпляр (если мне нужен новый экземпляр, я могу просто создать его заранее)? И как мне указать альтернативный режим?
решение1
Попробуйте следующее
#IfWinActive, ahk_class ConsoleWindowClass
#a::
WinGet, app_pid, PID
Run c:\opt\ConEmu-120704\ConEmu\ConEmuC.exe /ATTACH /CONPID=%app_pid%
Return
Альтернативный режим: /ATTACH /CONPID=<pid>
.
Запуск ConEmu.exe /detached
не нужен. GUI запустится автоматически, если не будет найден.
ОБНОВЛЕНИЕ. Сборка 120705. Если вы хотите безусловно запустить новое окно ConEmu, вы можете добавить /GHWND=NEW
аргументы ConEmuC
.
ОБНОВЛЕНИЕ 2. С другой стороны, может быть, вам Attach
вообще не нужно этого делать?Терминал по умолчаниюфункция, которая позволяет автоматически запускать ConEmu «вместо» стандартного терминала Windows при запуске любого консольного приложения.