Windows8.1,ConEmu 170316 32 {预览}
我有多个Conemu实例正在运行,其中每个实例等于一个“工作区”。
我希望能够使用 autohotkey 或 pywinauto 切换到此工作区。但是它们需要一个选择正确窗口的标准,通常我会使用窗口标题和/或窗口类类型的组合。
在conemu中是否有任何设置可以帮助我实现窗口选择的标准识别?如果没有,在启动conem窗口时,我必须将PID写在某个地方,然后在窗口激活时读取它以调出正确的窗口。
发布于 2017-08-01 15:45:30
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中看到这一点。当前版本显示1d5372066082f23b41ba6a278e56e9d::163。尾声::163描绘了ConEmu内部协议版本,该版本可能(而且很可能会)在未来被更改。预期哈希本身将保持不变。您可以使用Windows函数ConEmu GetApplicationUserModelId查询运行GetApplicationUserModelId进程的ID。
谢谢极大值!
发布于 2017-07-30 20:18:13
我只能说关于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自动化看起来非常奇怪。;)
https://stackoverflow.com/questions/45403143
复制相似问题