2017-07-30 204 views
1

Windows 8.1,ConEmu 170316 [32] {預覽}多個conemu窗口 - 如何區分?

我有多個Conemu實例在運行,其中每個實例等於一個「工作空間」。

我希望能夠用autohotkey或pywinauto切換到這個工作區。然而,他們需要選擇正確的窗口的標準,通常我使用窗口標題和/或窗口類的組合。

在conemu中是否有任何設置可以幫助我實現此窗口選擇的標準識別?如果沒有,我會在開始conem窗口時在某處寫入PID,然後在窗口激活時讀取它以調出右側窗口。

+0

我覺得這個問題更適合SuperUser,因爲你問的是程序設置,而不是編程。 – BrenBarn

+1

@BrenBarn不一定。我接受其他建議,但不一定涉及僅更改設置。如果我必須在python中編寫代碼來解決這個限制(我建議採用這種方式的一種非常好的方式),我很樂意這樣做。接受建議。 – MrR

+0

你如何運行ConEmu實例?我不明白你爲什麼要使用外部熱鍵管理器來激活ConEmu窗口... – Maximus

回答

1

As per faq(TY Maximus) - 見選項1:

1)使用-title「窗口名稱」開關明確地設置新的ConEmu實例的窗口標題。下面的例子開始新的ConEmu窗口,標題爲我的服務器,ssh到your.server.com裏面。如果您運行另一個選項卡或來自任務的多個選項卡,則無關緊要,ConEmu窗口標題將保留爲我的服務器。所以你可以依靠標題來選擇類名爲VirtualConsoleClass的窗口。

選項2也是有效的。我不得不(1)創建一個配置,並(2)在ahk/pywinauto中對散列ID進行硬編碼。只是使用窗口標題名稱似乎是正確的事情在我的情況下,應用程序ID設置似乎過度殺傷

2)Windows 7引入了AppUserModelID。 ConEmu使用可執行路徑名和一些開關(如-config,-loadcfgfile,-quake)創建一個散列以形成AppID,您可以在About/SysInfo中看到它。當前版本顯示1d5372066082f23b41ba6aa278e56e9d :: 163。 Trailing :: 163描述了ConEmu內部協議版本,它可能(並且很可能會在未來)進行更改。散列本身預計不會改變。您可以使用Windows API函數GetApplicationUserModelId從運行ConEmu進程查詢ID。

謝謝Maximus

+0

如果您使用不同的'-config'開關,您將擁有不同的AppID。 – Maximus

+0

當然!我已經更新了答案。 – MrR

1

我只能說關於pywinauto。當你調用app = Application().start('ConEmu64.exe') pywinauto已經記住了過程PID,並且每個新的WindowSpecification對象都假定了這個PID。當然,只有當你控制ConEmu(或任何其他應用程序)的啓動時纔是如此。更多細節可在Getting Started Guide中找到。

方法app.connect(title="some unique tab name")也會記住PID在app的對象。但是,如果標題相同的情況較少,則需要使用found_index=0標準來消除歧義。或者右鍵單擊選項卡並選擇更改窗口標題的「重命名選項卡...」上下文菜單項。

我對ConEmu做了一個簡短的介紹。即使對於Spy ++,工具欄和選項卡也是可見的。所以大部分操作都可以自動化。只是不確定在選項卡內的控制檯。如果你想輸入一些命令,最好使用標準的Python模塊subprocess,因爲控制檯程序的GUI自動化看起來非常奇怪。 ;)

+0

感謝您的富有洞察力的迴應。 「只有當你控制ConEmu(或任何其他應用程序)的啓動時,纔是真實的」 - >是的,我不一定非得把它保存在內存中,我可以保存在激活程序的一個很好的地方。可能會不同)。 「或者右鍵單擊選項卡並選擇」重命名選項卡...「上下文菜單項,它將更改窗口標題。」 - >選項卡以編程方式命名。我不想點擊任何東西。在任何時候,任何選項卡都可能被選中,所以我需要檢查窗口表中是否有與該會話中我知道的所有選項卡相匹配的內容。 – MrR

+0

「我對ConEmu進行了簡短的介紹,即使對Spy ++來說也可以看到工具欄和標籤,因此大部分操作都可以自動執行,只是不確定控制檯是否在標籤內部,如果你想輸入一些命令,標準的Python模塊子進程,因爲控制檯程序的GUI自動化看起來非常奇怪;;)「謝謝,這很有趣。我只是需要現在激活右窗口(我的「工作區」),然後我可以使用conemu本機機制來瀏覽選項卡。 – MrR

+0

您也可以動態構建來自python的conemu命令行/命令文件(例如,我爲我指定的文件夾中的每個git倉庫構建一組git控制檯)。非常容易和強大。 – MrR