Windows XPで、すでに起動しているコンソールアプリケーションがあります。 Console2 や ConEm などの別のコンソールエミュレーターに接続したいと思います。これは 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インスタンスにアタッチするにはどうすればよいですか?さらに良いことに、既存のインスタンスをアタッチするにはどうすればよいですか(新しいインスタンスが必要な場合は、事前に作成するだけです)。また、代替モードを指定するにはどうすればよいですか?
次を試してください
#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は自動的に開始されます。
[〜#〜] upd [〜#〜]。ビルド120705。新しいConEmuウィンドウを無条件に開始する場合は、/GHWND=NEW
をConEmuC
引数に追加できます。
UPD 2。一方、Attach
をまったく行う必要がないのではないでしょうか。 デフォルトのターミナル 機能があり、コンソールアプリケーションを実行するときに、標準のWindowsターミナルの「代わりに」ConEmuを自動的に実行できます。