AutoHotkey-“ return”和“ break”之间应该有区别吗?

时间:2019-07-16 10:37:12

标签: function loops return autohotkey break

在下面的脚本中,我循环使用“ return”和“ break”,但两者具有相同的效果。他们要做的是打破循环,继续执行脚本的其余部分。但是,返回后,脚本不应继续执行,这是break命令的作用所在,对吗?中断循环并继续执行脚本。返回后,脚本不应继续:?:

这里的脚本可以工作:

F1 & i::
        start := A_TickCount
        Loop {
            ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, G:\Saves\AutoHotkey - Snipping Tool - Screenshots\Chrome - New Tab.png
            totalTime := stop - start
            stop := A_TickCount
            if ErrorLevel = 0
                {
                break
                }
            else if totalTime > 3000
                {
                MsgBox, Something went wrong!
                return
                }
        } 
                msgbox, This message box should only appear when the immage was found!
                return

在这里,我创建了上一个脚本的功能,并在“出现问题!”之后创建了“ return”。被解释为“中断”命令,这似乎是因为在msgbox对话框之后,“出了点问题!”我得到下一个msgbox。

F1 & i::
ImageSearchFunction("G:\Saves\AutoHotkey - Snipping Tool - Screenshots\Chrome - New Tab.png")
msgbox, This message box should only appear when the immage was found!
return

函数本身:

ImageSearchFunction(ImagePath){
        start := A_TickCount
        Loop {
            ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, %ImagePath%
            totalTime := stop - start
            stop := A_TickCount
            if ErrorLevel = 0
                {
                break
                }
            else if totalTime > 3000
                {
                MsgBox, Something went wrong!
                return
                }
        } 
    }

1 个答案:

答案 0 :(得分:1)

我在AutoHotkey上找到了解决方案。我必须在循环中使用“退出”而不是“返回”。这样就可以了!