実行中のコンソールアプリケーションを新しいConEmuインスタンスに接続する

実行中のコンソールアプリケーションを新しいConEmuインスタンスに接続する

Windows XPで既に起動しているコンソールアプリケーションがあります。これを別のコンソールエミュレータに接続したいのですが、コンソール2またはコンエミュ。 これはConEmuで可能ConEmu を実行し、その「アタッチ先」メニュー項目を使用してリストからコンソール アプリケーションを選択すると動作します。

私は今これを自動化しようとしています。コンソールアプリケーションウィンドウにフォーカスし、キーを押すと、ConEmuの新しいインスタンスにアタッチされるようにしたいのです。オートホットキー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インスタンスの「Attach to」メニューエントリを使用すると、コンソールアプリケーションがアタッチされます。「alternative mode」チェックボックスをオンにする必要があります。バージョン120704で導入関連する場合。

既存のコンソール アプリケーションを新しい ConEmu インスタンスに接続するには、 を使用ConEmuC(または他の方法) するにはどうすればよいですか? さらに、既存のインスタンスを接続するにはどうすればよいでしょうか (新しいインスタンスが必要な場合は、事前に作成しておくことができます)? また、代替モードを指定するにはどうすればよいですか?

答え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

UPD2一方で、Attach何もする必要がない場合もあります。デフォルト端末任意のコンソール アプリケーションを実行するときに、標準の Windows ターミナルの代わりに ConEmu を自動的に実行できる機能。

関連情報