首页 > 解决方案 > AutoHotkey - “return”和“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 对话框之后“出了点问题!” 我得到下一个消息框。

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
                }
        } 
    }

标签: functionloopsreturnautohotkeybreak

解决方案


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


推荐阅读