2017-02-13 99 views
-1

稍有後臺,腳本會在窗口中找到圖像,然後按下相應的鍵以在該活動窗口中執行命令。它做這項工作,但讓我稍微滯後。現在它必須逐行完成一個循環,每循環可能需要1.5到2秒。有沒有辦法讓腳本一次查找所有圖像?然後當它識別其中一個圖像時,將相應的鍵發送到窗口。我寧願腳本更快,更可靠。任何關於組織方面的提示都將非常感激。這是我的代碼到目前爲止。AHK的幫助。無論如何要讓這個更有效率?

IfWinActive, xx{ 
Loop 
{ 
    CoordMode, Pixel, Window 
    ImageSearch, FoundX, FoundY, 0, 0, 1920, 1080, C:\retreat_F.png 
    If ErrorLevel = 0 
    { 
     Send, {f} 
    } 
    CoordMode, Pixel, Window 
    ImageSearch, FoundX, FoundY, 0, 0, 1920, 1080, *5 C:\knee_F.png 
    If ErrorLevel = 0 
    { 
     Send, {f} 
    } 
    CoordMode, Pixel, Window 
    ImageSearch, FoundX, FoundY, 0, 0, 1920, 1080, C:mighty_cleave_F.png 
    If ErrorLevel = 0 
    { 
     Send, {f} 
    } 
    CoordMode, Pixel, Window 
    ImageSearch, FoundX, FoundY, 0, 0, 1920, 1080, *7 C:\uppercut_4.png 
    If ErrorLevel = 0 
    { 
     Send, {4} 
    } 
    CoordMode, Pixel, Window 
    ImageSearch, FoundX, FoundY, 0, 0, 1920, 1080, *5 C:\piledrive_F.png 
    If ErrorLevel = 0 
    { 
     Send, {f} 
    } 
    CoordMode, Pixel, Window 
    ImageSearch, FoundX, FoundY, 0, 0, 1920, 1080, C:\moltenkup_C.png 
    If ErrorLevel = 0 
    { 
     Send, {c 2} 
    } 
} 
} 
+0

任何線索,你要做什麼,請嗎? –

+0

感謝您的反饋意見。我更新了這篇文章。該腳本在窗口中查找圖像,然後按下相應的鍵以在該活動窗口中執行命令。 –

+0

多個圖像可以在一個窗口中嗎?如果沒有,你可以儘快找到一個,而不是一直尋找所有的人。是否有一個圖像更可能存在,如果是的話,首先尋找那個圖像。 –

回答

0

您可以使代碼更短 - 每次只用不同的參數做同樣的事情。將參數放在數組中並使用循環:
您也每次都打電話給CoordMode,而且您不需要。

#SingleInstance force 
#Persistent 

mappings := [{imgsearch: "C:\retreat_F.png", send: "{f}"} 
      ,{imgsearch: "*5 C:\knee_F.png", send: "{f}"} 
      ,{imgsearch: "C:mighty_cleave_F.png", send: "{f}"} 
      ,{imgsearch: "C:\moltenkup_C.png", send: "{c 2}"}] 

CoordMode, Pixel, Window ; You only need this once, since you do not change mode 
;IfWinActive, xx{ 
Loop 
{ 
    for i, mapping in mappings { 
     ImageSearch, FoundX, FoundY, 0, 0, 1920, 1080, % mapping.imgsearch 
     If ErrorLevel = 0 
     { 
      Send, % mapping.send 
     } 
    } 
    Sleep 10 ; You should probably have a sleep in your loop to avoid high CPU usage 
} 
;}