web-dev-qa-db-ja.com

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

Windows XPで、すでに起動しているコンソールアプリケーションがあります。 Console2ConEm などの別のコンソールエミュレーターに接続したいと思います。これは 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=NEWConEmuC引数に追加できます。

UPD 2。一方、Attachをまったく行う必要がないのではないでしょうか。 デフォルトのターミナル 機能があり、コンソールアプリケーションを実行するときに、標準のWindowsターミナルの「代わりに」ConEmuを自動的に実行できます。

7
Maximus