2017-07-30 222 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