让我们尝试倍数 windows - 如何区分?
Multiple conemu windows - how to differentiate?
Windows 8.1,ConEmu 170316 [32] {预览}
我有多个 Conemu 实例 运行,其中每个实例等于一个 "workspace"。
我希望能够使用 autohotkey 或 pywinauto 切换到这个工作区。然而,他们需要一个选择正确 window 的标准,通常我会结合使用 window 标题和或 window class 类型。
conemu 中是否有任何设置可以帮助我实现 window 选择的标准识别?如果没有,我将不得不在启动 conem windows 时将 PID 记在某处,然后读取它以在 window 激活时间调出正确的 window。
我只能说pywinauto。当你调用 app = Application().start('ConEmu64.exe')
时,pywinauto 已经记住了进程 PID,并且每个新的 WindowSpecification object 都采用这个 PID。当然,只有当您控制 ConEmu(或任何其他应用程序)的启动时才是正确的。可以在 Getting Started Guide.
中找到更多详细信息
方法app.connect(title="some unique tab name")
也会记住app
object中的PID。但是,如果具有相同标题的实例很少,则需要使用 found_index=0
标准来消除歧义,例如。或者右键单击选项卡并选择 "Rename tab..." 上下文菜单项,这会更改 window 标题。
我快速浏览了一下 ConEmu。工具栏和选项卡甚至对 Spy++ 也是可见的。所以大部分的动作都可以自动化。只是不确定选项卡内的控制台。如果你想输入一些命令,最好使用标准 Python 模块 subprocess
因为控制台程序的 GUI 自动化看起来非常非常奇怪。 ;)
As per faq (ty Maximus) - 见选项 1:
1) Use -title “Window name” switch to explicitly set window title of new ConEmu instance. The example below starts new ConEmu window with title My server and ssh to your.server.com inside. Does not matter if you run another tab, or several tabs from task, the ConEmu window title remains My server. So you may rely on the title for selecting the window with class name VirtualConsoleClass.
选项 2 也有效。我必须 (1) 创建一个配置,以及 (2) 在 ahk / pywinauto 中硬编码散列 id。就我而言,仅使用 window 标题名称似乎是正确的做法,应用程序 ID 设置似乎有点过头了
2) Windows 7 introduced AppUserModelID. ConEmu uses executable path name and some switches (like -config, -loadcfgfile, -quake) to create a hash to form AppID, which you may see in the About / SysInfo. Current version shows 1d5372066082f23b41ba6aa278e56e9d::163. The trailing ::163 depicts ConEmu internal protocol version which may (and most probably would) be changed in the future. The hash itself is expected to be unchanged. You may query the ID from running ConEmu process using Windows API function GetApplicationUserModelId.
谢谢Maximus!
Windows 8.1,ConEmu 170316 [32] {预览}
我有多个 Conemu 实例 运行,其中每个实例等于一个 "workspace"。
我希望能够使用 autohotkey 或 pywinauto 切换到这个工作区。然而,他们需要一个选择正确 window 的标准,通常我会结合使用 window 标题和或 window class 类型。
conemu 中是否有任何设置可以帮助我实现 window 选择的标准识别?如果没有,我将不得不在启动 conem windows 时将 PID 记在某处,然后读取它以在 window 激活时间调出正确的 window。
我只能说pywinauto。当你调用 app = Application().start('ConEmu64.exe')
时,pywinauto 已经记住了进程 PID,并且每个新的 WindowSpecification object 都采用这个 PID。当然,只有当您控制 ConEmu(或任何其他应用程序)的启动时才是正确的。可以在 Getting Started Guide.
方法app.connect(title="some unique tab name")
也会记住app
object中的PID。但是,如果具有相同标题的实例很少,则需要使用 found_index=0
标准来消除歧义,例如。或者右键单击选项卡并选择 "Rename tab..." 上下文菜单项,这会更改 window 标题。
我快速浏览了一下 ConEmu。工具栏和选项卡甚至对 Spy++ 也是可见的。所以大部分的动作都可以自动化。只是不确定选项卡内的控制台。如果你想输入一些命令,最好使用标准 Python 模块 subprocess
因为控制台程序的 GUI 自动化看起来非常非常奇怪。 ;)
As per faq (ty Maximus) - 见选项 1:
1) Use -title “Window name” switch to explicitly set window title of new ConEmu instance. The example below starts new ConEmu window with title My server and ssh to your.server.com inside. Does not matter if you run another tab, or several tabs from task, the ConEmu window title remains My server. So you may rely on the title for selecting the window with class name VirtualConsoleClass.
选项 2 也有效。我必须 (1) 创建一个配置,以及 (2) 在 ahk / pywinauto 中硬编码散列 id。就我而言,仅使用 window 标题名称似乎是正确的做法,应用程序 ID 设置似乎有点过头了
2) Windows 7 introduced AppUserModelID. ConEmu uses executable path name and some switches (like -config, -loadcfgfile, -quake) to create a hash to form AppID, which you may see in the About / SysInfo. Current version shows 1d5372066082f23b41ba6aa278e56e9d::163. The trailing ::163 depicts ConEmu internal protocol version which may (and most probably would) be changed in the future. The hash itself is expected to be unchanged. You may query the ID from running ConEmu process using Windows API function GetApplicationUserModelId.
谢谢Maximus!