Windows 8.1,ConEmu 170316 [32] {预览}
我有多个Conemu实例在运行,每个实例等于一个“工作空间”。
我想能够切换到这个工作区与autohotkey或pywinauto。 然而,他们需要select正确的窗口的标准,通常我采用窗口标题和/或窗口类的组合。
有没有什么设置可以帮助我实现窗口select的这个标准识别? 如果没有,那么当我启动conem窗口的时候,我将不得不在某处写入PID,然后在窗口激活时读取它来调出右边的窗口。
我只能说pywinauto。 当你调用app = Application().start('ConEmu64.exe')
pywinauto已经记住了进程PID,并且每个新的WindowSpecification对象都会使用这个PID。 当然,只有当你控制ConEmu(或任何其他应用程序)的启动时才是如此。 更多详细信息可以在入门指南中找到。
方法app.connect(title="some unique tab name")
也会记住app
对象中的PID。 但是,如果相同标题的实例很少,则需要使用found_index=0
标准来消除歧义。 或者右键单击选项卡,然后选择更改窗口标题的“重命名选项卡…”上下文菜单项。
我在ConEmu看了一下。 即使对于Spy ++,工具栏和选项卡也是可见的。 所以大部分操作都可以自动化。 只是不确定在一个选项卡内的控制台。 如果你想输入一些命令,最好使用标准的Python模块subprocess
因为控制台程序的GUI自动化看起来非常奇怪。 ;)
按照常规 (ty Maximus ) – 见选项1:
1)使用-title“窗口名称”切换来显式设置新的ConEmu实例的窗口标题。 下面的例子启动新的ConEmu窗口,标题为我的服务器,ssh到your.server.com里面。 如果您运行另一个选项卡或任务中的多个选项卡,则无关紧要,ConEmu窗口标题将保留为我的服务器。 所以你可以依靠标题来选择类名为VirtualConsoleClass的窗口。
选项2也是有效的。 我不得不(1)创建一个配置,(2)硬编码ahk / pywinauto哈希编号。 只是使用窗口标题名称似乎是正确的事情在我的情况下,应用程序ID设置似乎矫枉过正
2)Windows 7引入了AppUserModelID。 ConEmu使用可执行路径名和一些开关(如-config,-loadcfgfile,-quake)来创建一个哈希来形成AppID,您可以在About / SysInfo中看到这些。 当前版本显示1d5372066082f23b41ba6aa278e56e9d :: 163。 Trailing :: 163描述了ConEmu内部协议版本,未来可能(也很可能)会被更改。 散列本身预计将保持不变。 您可以使用Windows API函数GetApplicationUserModelId查询运行ConEmu进程的ID。
谢谢Maximus !