AutoHotKey单击脚本

时间:2017-11-23 07:15:21

标签: autohotkey

我刚刚开始使用AutoHotKey,我正在寻找一个脚本,每秒点击一次10次,然后按住鼠标右键3秒,然后重置。我打算在alt + c上激活,如果我按下鼠标左键就会中断。

我提出的脚本

LButton::
BreakLoop = 1
return
!c::
Loop
{
if (BreakLoop = 1)
break
;

Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Send, {RButton Down}
Sleep, 3000
Send, {RButton Up}
Return
}

但是,这不起作用。有没有办法解决这个问题,还是我对这个脚本采用了完全错误的方法?

3 个答案:

答案 0 :(得分:1)

你确实在代码中犯了一个错误,在底部你确实有返回命令进入循环这是不可能的。 (这个返回命令将需要!c ::并且它必须在循环命令之外输出)

守则必须像:

~LButton::
BreakLoop = 1
return

!c::
Loop
{
if (BreakLoop = 1)
break

Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Send, {RButton Down}
Sleep, 3000
Send, {RButton Up}
}
Return

提示:如果你将Lbutton ::改为~Lbutton ::那么默认的LeftButton也是活跃的。

答案 1 :(得分:0)

我实际上能够找到一种方法来显着压缩它(并通过在循环中嵌套循环来更快地打破循环)

!s::
BreakLoop = 1
return


!c::
BreakLoop = 0

Loop
{

Loop 10
{
if (BreakLoop = 1)
break
;
Click
Sleep, 900
}

Send, {RButton Down}
Sleep, 3000
Send, {RButton Up}
}
if (BreakLoop = 1)
Break
;

Return

答案 2 :(得分:0)

更好的方法是使用SetTimer,这允许您在操作序列中的任何一点突破循环。

尝试:

!c::setTimer, doAction, 1000
!s::SetTimer, doAction, Off 

doAction:
    i += (i <= 14 ? 1 : -13)
    if (i == 14)
        send, {RButton Up}
    else if (i == 11 )
        Send, {RButton Down}
    else if (i <= 10) 
        click   
return