多个conemu窗口 - 如何区分?

时间:2017-07-30 18:20:07

标签: python windows autohotkey pywinauto conemu

Windows 8.1,ConEmu 170316 [32] {预览}

我运行了多个Conemu实例,其中每个实例等于一个“工作区”。

我希望能够使用autohotkey或pywinauto切换到此工作区。但是它们需要一个选择正确窗口的标准,通常我会使用窗口标题和窗口类型的组合。

conemu中是否有任何设置可以帮助我实现窗口选择的标准识别?如果没有,我将在启动conem窗口时将PID写入某处,然后在窗口激活时读取它以显示正确的窗口。

2 个答案:

答案 0 :(得分:1)

我只能说pywinauto。当你调用python manage.py collectdata 时,pywinauto已经记住进程PID,并且每个新的WindowSpecification对象都假定这个PID。当然,只有当你控制ConEmu(或任何其他应用程序)的开始时才是真的。有关详情,请参阅Getting Started Guide

方法app = Application().start('ConEmu64.exe')还会记住app.connect(title="some unique tab name")对象中的PID。但是,如果具有相同标题的实例很少,则需要使用app标准消除歧义。或者右键单击选项卡,然后选择“重命名选项卡...”上下文菜单项,它将更改窗口标题。

我看了一眼ConEmu。即使对于Spy ++,工具栏和选项卡也是可见的。因此,大多数操作都可以实现自动化。只是不确定选项卡内的控制台。如果要键入一些命令,使用标准Python模块found_index=0要好得多,因为控制台程序的GUI自动化看起来非常奇怪。 ;)

答案 1 :(得分:1)

As per faq(ty Maximus) - 参见选项1:

  

1)使用-title“Window name”开关显式设置新ConEmu实例的窗口标题。下面的例子开始新的ConEmu窗口,标题为My server,ssh到your.server.com里面。如果您运行另一个选项卡或任务中的多个选项卡,则无关紧要,ConEmu窗口标题仍为我的服务器。因此,您可以依靠标题来选择具有类名称VirtualConsoleClass的窗口。

选项2也有效。我必须(1)创建一个配置,并(2)在ahk / pywinauto中对哈希的id进行硬编码。在我的情况下,使用窗口标题名称似乎是正确的做法,app id设置似乎有点过分

  

2)Windows 7引入了AppUserModelID。 ConEmu使用可执行路径名和一些开关(如-config,-loadcfgfile,-quake)来创建一个哈希来形成AppID,您可以在About / SysInfo中看到它。当前版本显示1d5372066082f23b41ba6aa278e56e9d :: 163。尾随:: 163描述了ConEmu内部协议版本,可能(并且很可能会)将来更改。散列本身预计不会改变。您可以使用Windows API函数GetApplicationUserModelId从运行ConEmu进程中查询ID。

谢谢Maximus

相关问题