微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

自动热键异步循环

如何解决自动热键异步循环

这是我的代码

toggle:=0

z::
    if GetKeyState("LButton") {
    toggle:= 0
        Send % "{Click Up}"
    Send % "{w Up}"
    Send % "{Ctrl Up}"
        BlockInput,MouseMoveOff
    } else {
        Send % "{Click Down}"
    Send % "{w Down}"
    Send % "{Ctrl Down}"
        BlockInput,MouseMove
    toggle := 1
    If (toggle := 1) 
            SetTimer,loop,-1 
        }
return

loop:
while (toogle := 1) {
    MouseMove,50,R
    MouseMove,-50,R
    Sleep,700 
}
return

按“左键单击”,“ w”和“ ctrl” 如果再次按下“ z”,则将其释放

循环应使鼠标每隔1秒左移一次,然后将同样的量向右移

但这不起作用

如果我按“ z”,循环不会停止

解决方法

:= (docs) 用于分配表达式的结果,而不是比较值。
使用= or ==运算符进行比较。
或者,当您只是在检查真/假值时,
(toggle = 1)(toggle)
(toggle = 0)(!toggle)相同。

您在while循环中还拼错了toggle
这是固定的 代码(逻辑上似乎仍然很不完善)。
但是也许当脚本错误消失后,您现在可以修复逻辑。

z::
    if (GetKeyState("LButton"))
    {
        toggle := 0
        Send % "{Click Up}"
        Send % "{w Up}"
        Send % "{Ctrl Up}"
        BlockInput,MouseMoveOff
    } 
    else 
    {
        Send % "{Click Down}"
        Send % "{w Down}"
        Send % "{Ctrl Down}"
        BlockInput,MouseMove
        toggle := 1
        
        ;this check will never be false because literally right above you set the value?
        if (toggle) 
            SetTimer,loop,-1 
    }
return

loop:
    while (toggle) 
    {
        MouseMove,50,R
        MouseMove,-50,R
        Sleep,700 
    }
return

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。