我想制作一个AutoHotKey脚本,将命令发送到某个CMD窗口,但我在选择所需的窗口时遇到问题,因为我运行的是至少3-4个CMD窗口,它们的标题都以“C: \ Window \ System32 \ cmd.exe“,所以我最多只是一个一个地循环浏览窗口。如何使用AutoHotKey从具有相同名称的CMD窗口列表中选择特定的窗口?
如何从具有相同名称的CMD窗口列表中选择特定窗口?
大多数情况下,这些都是我的CMD使用,我要指定的具有最普通名称的第一个(左上角)。
我想制作一个AutoHotKey脚本,将命令发送到某个CMD窗口,但我在选择所需的窗口时遇到问题,因为我运行的是至少3-4个CMD窗口,它们的标题都以“C: \ Window \ System32 \ cmd.exe“,所以我最多只是一个一个地循环浏览窗口。如何使用AutoHotKey从具有相同名称的CMD窗口列表中选择特定的窗口?
如何从具有相同名称的CMD窗口列表中选择特定窗口?
大多数情况下,这些都是我的CMD使用,我要指定的具有最普通名称的第一个(左上角)。
我不认为你可以用AutoHotkey区分不同的cmd.exe窗口。
但是,您可以使用其他命令行软件,它将允许使用AutoHotkey区分不同的命令行会话。例如,here和here是其他一些命令行软件。其他软件很容易找到google。看看那里的截图,其中大部分都有用于不同命令行会话的选项卡。您可以使用AutoHotkey GUI自动化命令在不同的选项卡之间切换。
Cmd窗口与所有其他窗口不同,可以使用cmd窗口的hwnd,但您仍然需要知道您需要的窗口。有很多方法可以做到这一点! – blackholyman 2014-12-02 18:37:00
你可以尝试从AHK启动它,并从那里自动retrive的ID ...
你也可以尝试建立其“教”的CMD使用......这将需要点击一个功能他们的CMD窗口出现一次后......基本上你的AHK脚本就必须读取这个窗口的UID。
温格特
获取指定窗口的唯一ID,进程ID,进程名称,或者其控制的列表。它还可以检索符合指定条件的所有窗口的列表。
WinGet, OutputVar [, Cmd, WinTitle, WinText, ExcludeTitle, ExcludeText]
例如为:WinGet, OutputVar , ID , A
将检索活动窗口
但是,如果没有进一步的细节,很难告诉你真正需要的ahk_id。
初始化窗口时,您可以使用title命令。
Run, %comspec% /k cd c:\ && title MyWindow 1 && tasklist
winwait,MyWindow 1
WinMove,MyWindow 1,,20,20
Run, %comspec% /k cd c:\ && title MyWindow 2
winwait,MyWindow 2
WinMove,MyWindow 2,,20,365
ControlSend,,taskkill /pid ` ,MyWindow 2
你能告诉我们你怎么知道什么是正确的窗口?这将有助于找到让脚本选择正确的cmd窗口的方法...... – blackholyman 2014-12-02 15:02:46
那么这个问题 - 理论上所有的窗口都是相同的,因为它们都是CMD窗口。右边的窗口是我第一次运行我想要的命令(这是运行项目构建)。我想在建立我的项目之后关闭CMD窗口,并创建一个打开CMD并运行构建命令的AHK脚本是一个解决方案......但我认为这不是一个好的方法,因此我问上面的问题。 – MRadev 2014-12-02 15:26:09
当你在命令或函数标题参数中使用'ahk_id%hwnd%'使用窗口的hwnd时,所有的cmd窗口都会有自己的窗口ID aka hwnd,但是您仍然需要一种方法让脚本知道什么是正确的窗口它可以是Z顺序或大小或创建时间或其他... – blackholyman 2014-12-02 18:41:33