2014-12-02 155 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