首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AutoHotKey点击脚本

AutoHotKey点击脚本
EN

Stack Overflow用户
提问于 2017-11-23 07:15:21
回答 3查看 6.4K关注 0票数 0

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

我想出来的剧本

代码语言:javascript
复制
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
}

然而,这是行不通的。有没有解决这个问题的方法,还是我对这个脚本采取了完全错误的方法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-11-23 09:48:46

您确实在代码中犯了错误,在底部您确实让返回命令到循环中,这是不可能的。(这个返回命令将用于!c::,它必须输出循环命令)

“守则”必须是:

代码语言:javascript
复制
~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
EN

Stack Overflow用户

发布于 2017-11-24 03:58:22

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

代码语言:javascript
复制
!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
票数 0
EN

Stack Overflow用户

发布于 2017-11-24 21:35:49

一个更好的方法是使用SetTimer,这允许您在操作序列中的任意点跳出循环。

尝试:

代码语言:javascript
复制
!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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47449597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档