2015-06-16 272 views
1

我有以下AHK腳本運行C &Ç將軍:的AutoHotkey - ControlClick內窗口

#SingleInstance ignore 
CoordMode, Mouse, Relative 

Run C:\Users\william\Desktop\Generals.lnk 

a::Left 
s::Down 
d::Right 
w::Up 

Loop{ 
sleep, 500 
} 
Until WinExist("ahk_exe Generals.exe") 

sleep, 200 
SetControlDelay -1 
ControlClick, 1, ahk_class #32770, "", LEFT, 10, 300, 300 

Loop{ 
sleep, 500 
} 

Until WinExist("ahk_exe Generals.exe") 
WinWaitClose 
Exit 

的問題是,我不能讓ControlClick點擊第二個按鈕。

enter image description here

我讀過的手冊,但我不明白,爲什麼這是行不通的。我甚至不知道它是否點擊。

得到它的工作:

#SingleInstance ignore 
CoordMode, Mouse, Relative 

Run C:\Users\william\Desktop\Generals.lnk 

winWait, ahk_exe Generals.exe 

Click 300, 300 

winWait, ahk_exe Generals.exe 
WinWaitClose 
Exit 

a::Left 
s::Down 
d::Right 
w::Up 

回答

3

太多的評論,我會讓它的答案,而不是:

a::Left 
s::Down 
d::Right 
w::Up 

Loop{ 
... 

重點重映射(s::Down)帶來return與他們含蓄。相同的方式,像s::msgbox, hi熱鍵僅用於

s:: 
    msgbox, hi 
return 

縮寫形式鍵重新映射僅用於多行的簡寫形式。所以,你的腳本已經在Run命令之後終止。把所有熱鍵,標籤,函數,熱點和鍵重映射所有你想在程序啓動時發生。如果你雙擊任務欄圖標,你可以看到你的腳本行爲。有關更多信息,請參見the auto-execute section


loop 
    sleep, 500 
Until WinExist("ahk_exe Generals.exe") 

實際上存在AutoHotkey的這個特殊的命令:

winWait, ahk_exe Generals.exe 

ControlClick, 1, ahk_class #32770, "", LEFT, 10, 300, 300 

,如果你想點擊一個窗口controlClick是有用這是不是在前臺。根據你的圖片,C & C幾乎在你的前臺。所以我想你可以簡單地使用click命令。

另外(見controlClick解釋)1作爲控制或pos沒有任何意義..你是什麼意思300, 300?這些都是選項excludeTitle參數


WinWaitClose 

你打算用你的腳本退出遊戲?如果不是,這條線是沒有意義的


Exit 

,如果你想保持你的腳本運行(使用鍵重新映射),出口是好的,但return會更合適。如果你想退出整個腳本,使用exitapp代替


的問題是,我不能讓ControlClick點擊第二個按鈕。

什麼按鈕?

+1

使用'WinWaitClose'我想等到我停止遊戲,然後停止腳本。我想單擊零時間按鈕。順便說一句好的提示我會重寫我的腳本。 – botenvouwer