【问题标题】:Cant perform any other actions while in loop在循环中无法执行任何其他操作
【发布时间】:2020-03-01 21:44:33
【问题描述】:

功能:我希望脚本循环 F5 来为我刷新页面,当我看到一些不错的东西时,我按下其他键之一来狙击一个项目。

问题:当它循环 F5 时,我无法执行任何其他脚本。

MouseGetPos, OrigX, OrigY
mouseClick, left
sleep 20
random, randomlocx , 0,5
random, randomlocy , 0,5
MouseMove, 1162+randomlocx, 477+randomlocy, 0
mouseClick, left
sleep 10
send {y}
random, randomlocx2 , 0,10
random, randomlocy2 , 0,10
MouseMove, OrigX+randomlocx2, OrigY+randomlocy2, 0
return

2::
MouseGetPos, OrigX, OrigY
random, randomlocx , 0,5
random, randomlocy , 0,5
MouseMove, 964+randomlocx, 575+randomlocy, 0
sleep 20
mouseClick, left
MouseMove, OrigX, OrigY, 0

~$F5::
loop , 300 
{
Send {F5}
}   
return
F12::Reload   ; Reload script```

【问题讨论】:

    标签: autohotkey


    【解决方案1】:

    AutoHotkey 不提供真正的多线程,这就是为什么当您运行循环时您的脚本不会响应的原因。
    要解决这个问题,您需要使用Timer。循环真的不适合这些东西。

    一键开启/关闭定时器的示例:

    F5::
        toggle := !toggle ;a convenient way to toggle a variable in AHK, see below of explanation
        if(toggle) ;if true
            SetTimer, TimerCallback, 100 ;callback every ~100ms
        else
            SetTimer, TimerCallback, Off ;turn off timer
    return
    
    TimerCallback() ;the callback function
    {
        Tooltip, % A_TickCount
    }
    

    toggle := !toggle 变量状态切换的解释可以从我以前的答案here 中找到。
    还包括一个可爱的小 1liner 计时器切换热键的示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-13
      • 1970-01-01
      • 2014-04-10
      • 2021-11-11
      • 2020-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多