2014-12-02 154 views
0

我想制作一个AutoHotKey脚本,将命令发送到某个CMD窗口,但我在选择所需的窗口时遇到问题,因为我运行的是至少3-4个CMD窗口,它们的标题都以“C: \ Window \ System32 \ cmd.exe“,所以我最多只是一个一个地循环浏览窗口。如何使用AutoHotKey从具有相同名称的CMD窗口列表中选择特定的窗口?

如何从具有相同名称的CMD窗口列表中选择特定窗口?

enter image description here

大多数情况下,这些都是我的CMD使用,我要指定的具有最普通名称的第一个(左上角)。

+0

你能告诉我们你怎么知道什么是正确的窗口?这将有助于找到让脚本选择正确的cmd窗口的方法...... – blackholyman 2014-12-02 15:02:46

+0

那么这个问题 - 理论上所有的窗口都是相同的,因为它们都是CMD窗口。右边的窗口是我第一次运行我想要的命令(这是运行项目构建)。我想在建立我的项目之后关闭CMD窗口,并创建一个打开CMD并运行构建命令的AHK脚本是一个解决方案......但我认为这不是一个好的方法,因此我问上面的问题。 – MRadev 2014-12-02 15:26:09

+0

当你在命令或函数标题参数中使用'ahk_id%hwnd%'使用窗口的hwnd时,所有的cmd窗口都会有自己的窗口ID aka hwnd,但是您仍然需要一种方法让脚本知道什么是正确的窗口它可以是Z顺序或大小或创建时间或其他... – blackholyman 2014-12-02 18:41:33

回答

0

我不认为你可以用AutoHotkey区分不同的cmd.exe窗口。

但是,您可以使用其他命令行软件,它将允许使用AutoHotkey区分不同的命令行会话。例如,herehere是其他一些命令行软件。其他软件很容易找到google。看看那里的截图,其中大部分都有用于不同命令行会话的选项卡。您可以使用AutoHotkey GUI自动化命令在不同的选项卡之间切换。

+1

Cmd窗口与所有其他窗口不同,可以使用cmd窗口的hwnd,但您仍然需要知道您需要的窗口。有很多方法可以做到这一点! – blackholyman 2014-12-02 18:37:00

2

你可以尝试从AHK启动它,并从那里自动retrive的ID ...

你也可以尝试建立其“教”的CMD使用......这将需要点击一个功能他们的CMD窗口出现一次后......基本上你的AHK脚本就必须读取这个窗口的UID。

温格特

获取指定窗口的唯一ID,进程ID,进程名称,或者其控制的列表。它还可以检索符合指定条件的所有窗口的列表。

WinGet, OutputVar [, Cmd, WinTitle, WinText, ExcludeTitle, ExcludeText]

例如为:WinGet, OutputVar , ID , A将检索活动窗口

但是,如果没有进一步的细节,很难告诉你真正需要的ahk_id。

+0

嗯,我喜欢这个解决方案,点击窗口就可以工作,因为我需要这样做一次,然后只使用映射的键来重复它。我不确定如何获得ID,会尝试看看我是否理解你的例子(我对AHK相当陌生) – MRadev 2014-12-03 15:05:14

+0

我刚刚为你添加了一张图片,以了解我的意思。我需要选择最左上角的CMD窗口。正如我所说的,在我打开之后做点击操作对我来说很有用。 – MRadev 2014-12-03 15:15:47

0

初始化窗口时,您可以使用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