通过按键结束没有脚本关闭的结束执行?

时间:2014-06-20 07:30:17

标签: loops return autohotkey break nested-function

问题

  • 基本上,标题说明了一切!如何通过热键停止执行热键?
  • 如何在不关闭脚本的情况下这样做?
  • 如何明确设置热键以优先于特定循环?

说明

我有一个执行数百次的循环(代码附加),我想创建一个kill开关。如果我停止运行,我不想重新打开脚本,我需要长时间睡眠,所以我可以愚弄鼠标,就像它一样。

我正在查看各种页面,例如tutorialbreak

我尝试了什么

例如,我应该以某种方式命名我的循环吗?因为Break没有参数,我想:没有办法指定要打破的内容。

另一个例子:我应该在循环中添加一个热键来打破?如果是这样,我该怎么做?只需将^!p::扔进每个热键下的巢中?或者是否有另一种方法可以将热键添加到热键(例如,使用GetKeyState)?

答案格式

如果可能,请使用以下代码 show not not tell 您的答案:

^!i::
{
    Loop 1300
    {
        Send ^+{PrintScreen}
        Sleep 1500
        MouseClickDrag, left, 0, 100, 600, 400
        Sleep 1000
        Send 1
        Sleep 500
    }
    Return
}
^!o::
{
    Loop 1323
    {
        Send ^+{PrintScreen}
        Sleep 1500
        MouseClickDrag, left, 0, 200, 600, 400
        Sleep 1000
        Send 1
    }
    Return
}

1 个答案:

答案 0 :(得分:1)

如果您想要受控停止,即在脚本中的某个点,那么您可以使用热键设置变量并在脚本中测试该变量。设置变量并且IF语句为true时,重置该变量并退出循环。否则,您可以通过reload命令随机杀死脚本。这样脚本就会关闭,但会立即重新打开。

^!i::
MyStopVariable:=0 ; Set the variable to 0
Loop 1300
{
    If MyStopVariable
        Exit ; Or Break if you want to finish something of after the loop
    Send ^+{PrintScreen}
    Sleep 1500
    MouseClickDrag, left, 0, 200, 600, 400
    Sleep 1000
    If MyStopVariable
        Exit ; Or Break if you want to finish something of after the loop
    Sleep 500
}
Return

^!o::
MyStopVariable:=0 ; Set the variable to 0
Loop 1323
{
    If MyStopVariable
        Exit ; Or Break if you want to finish something of after the loop
    Send ^+{PrintScreen}
    Sleep 1500
    MouseClickDrag, left, 0, 200, 600, 400
    Sleep 1000
    If MyStopVariable
        Exit ; Or Break if you want to finish something of after the loop
    Send 1
}
Return

^!s:: ; Ctrl+Alt+s = stop
MyStopVariable:=1
Return

或者,您可以使用原始代码并添加重新加载。

^!s:: ; Ctrl+Alt+s = stop
    Reload
Return