2017-07-30 5 views
1

Windows 8.1、ConEmu 170316 [プレビュー]複数のウィンドウ - どのように区別するのですか?

私は複数のConemuインスタンスを実行しています。各インスタンスは1つの「ワークスペース」に相当します。

autohotkeyまたはpywinautoを使用してこのワークスペースに切り替えることができます。しかし、彼らは右のウィンドウを選択するための基準を必要とし、通常私はウィンドウのタイトルやウィンドウクラスのタイプの組み合わせを採用しています。

ウィンドウ選択のためのこの基準の識別を達成するのに役立つ設定はありますか?表示されていない場合は、ウィンドウを起動したときにPIDをどこかに書き込んでから、ウィンドウのアクティブ化時に正しいウィンドウを表示する必要があります。

+0

この質問は、プログラミングに関するものではなく、プログラムの設定について尋ねているので、SuperUserにとってより適していると思います。 – BrenBarn

+1

@BrenBarnは必ずしもそうではありません。私は、必ずしも設定が変更されているとは限りません。私がこの制限を回避するためにPythonで何かをコーディングしなければならない場合(私はそれを行うための私の頭の中の方法の1つを示唆しています)、私はそれを行うことを嬉しく思っています。提案に開放されています。 – MrR

+0

どのようにConEmuインスタンスを実行しますか? ConEmuウィンドウをアクティブにするために外部ホットキーマネージャを使用する理由を理解できません。 – Maximus

答えて

1

As per faq(TY Maximus) - オプション1を参照してください。

1)を明示的に新しいConEmuインスタンスのウィンドウタイトルを設定する「ウィンドウ名」スイッチを-title使用してください。以下の例では、My Serverというタイトルの新しいConEmuウィンドウとyour.server.comのsshを内部で開始します。別のタブを実行するかタスクからいくつかのタブを実行する場合は問題ありません。ConEmuウィンドウのタイトルはMy serverのままです。クラス名VirtualConsoleClassを持つウィンドウを選択するタイトルに頼っているかもしれません。

オプション2も有効です。私は(1)設定を作成し、(2)ahk/pywinautoでハッシュされたIDをハードコードする必要があります。私の場合、ウィンドウタイトルの名前を使用するだけで問題はないようですが、アプリケーションIDの設定が過剰です。

2)Windows 7でAppUserModelIDが導入されました。 ConEmuは実行可能なパス名といくつかのスイッチ(-config、-loadcfgfile、-quakeなど)を使用してAbout/SysInfoに表示されるAppIDを形成するハッシュを作成します。現在のバージョンは1d5372066082f23b41ba6aa278e56e9d :: 163です。 trailing :: 163はConEmuの内部プロトコルバージョンを示しており、今後変更される可能性があります。ハッシュ自体は変更されないと予想されます。 Windows API関数GetApplicationUserModelIdを使用して、実行しているConEmuプロセスからIDを照会することができます。

ありがとうMaximus

+0

異なる '-config'スイッチを使用すると、AppIDが異なることになります。 – Maximus

+0

もちろん!私は答えを更新しました。 – MrR

1

私はピリビュートについてしか言いません。 app = Application().start('ConEmu64.exe')と呼ぶと、すでにプロセスPIDが記憶されており、新しいPIDSはすべての新しいWindowSpecificationオブジェクトを仮定しています。もちろん、ConEmu(または他のアプリ)の起動を制御している場合に限ります。詳細はGetting Started Guideにあります。

方法app.connect(title="some unique tab name")は、appオブジェクトのPIDも覚えています。しかし、同じタイトルのインスタンスが少ない場合は、例えば、found_index=0の基準を使用して曖昧さを除去する必要があります。または、タブを右クリックし、ウィンドウタイトルを変更するコンテキストメニュー項目の[名前を変更...]を選択します。

私はConEmuについて簡単に見ました。ツールバーとタブはSpy ++でも表示されます。したがって、ほとんどのアクションは自動化できます。タブ内のコンソールについてはわかりません。いくつかのコマンドを入力したいのであれば、標準のPythonモジュールsubprocessを使用する方がはるかに優れています。なぜなら、コンソールプログラムのGUI自動化は非常に奇妙に見えるからです。 ;)

+0

あなたの洞察力のある応答に感謝します。 「ConEmu(または他のアプリ)の起動を制御している場合にのみ、本当です」 - >はい、私は必ずしもそれを記憶しておく必要はありません。異なるかもしれない)。または、タブを右クリックし、ウィンドウタイトルを変更するコンテキストメニュー項目 "タブの名前を変更..."を選択してください。 →タブはプログラムによって命名されます。私は何かをクリックする必要はありません。いずれの時点でもタブが選択されている可能性があるので、そのセッションで知っているすべてのタブとの一致をウィンドウテーブルで確認する必要があります。 – MrR

+0

"私はConEmuについて簡単に見ましたが、ツールバーとタブはSpy ++でも見ることができるので、ほとんどの操作は自動化できます。タブ内のコンソールについてはわかりません。コマンドを入力する場合は、コンソールプログラムのGUI自動化が非常に奇妙に見えるので、標準的なPythonモジュールのサブプロセスです;) "ありがとう、これは興味深いことです。私はちょうど右のウィンドウ(私の「ワークスペース」)をアクティブにする必要がありました。次に、固有のメカニズムを使用してタブをナビゲートできます。 – MrR

+0

また、conemuコマンドライン/コマンドファイルをpythonから動的に構築することもできます(例えば、私が指定したフォルダ内の各gitリポジトリに対して一連のgitコンソールを構築します)。かなり簡単で強力です。 – MrR

関連する問題