You need to enable JavaScript to run this app. AutoHotkey双循环按不同间隔发送文本 实现启动立即执行后定时
优惠活动
大模型
产品
解决方案
定价
更多

AutoHotkey双循环按不同间隔发送文本 实现启动立即执行后定时

现有脚本的问题点
  • 定时器默认行为:AHK的SetTimer绑定固定间隔后,会先等一整个间隔周期才第一次执行回调,不会在设置完成的瞬间触发。
  • 参数书写错误:原脚本Loop2的间隔值写的是300500毫秒(折合300.5秒),和需求的30.5秒(对应30500毫秒)偏差极大,哪怕定时器逻辑正常,实际循环间隔也不对。
  • 之前尝试SetTimer, 回调, 0的误区:AHK中给SetTimer传0值的语义是生成一个只执行1次、跑完自动销毁的单次定时器,不是“立刻触发一次后再按固定周期循环”,这也是之前出现“只跑一次就停”的原因。
调整思路

不需要依赖SetTimer的特殊参数实现首次即时执行,只需要在F7切换到启动状态的分支里,先手动调用两个循环的执行逻辑完成首次全量发送,再绑定对应间隔的长期定时器,就能完全匹配预期的运行逻辑。

修正后可直接运行的脚本
#SingleInstance Force

Toggle := false ; 初始化循环开关状态

F7::
Toggle := !Toggle
if (Toggle)
{
    ; 启动瞬间直接执行一次全量发送
    Gosub, Loop1
    Gosub, Loop2
    ; 按需求绑定两个循环的定时间隔
    SetTimer, Loop1, 14500
    SetTimer, Loop2, 30500
}
else
{
    ; 关闭时直接终止两个定时器
    SetTimer, Loop1, "Off"
    SetTimer, Loop2, "Off"
}
return

F5::Reload

Loop1:
SendInput .word1{Enter}
return

Loop2:
SendInput .word2{Enter}
SendInput .word3{Enter}
SendInput .word4{Enter}
return
实际运行效果
  • 按下F7启动:立刻触发一次Loop1和Loop2的发送动作,4个带回车的单词会一次性发向当前激活窗口
  • 启动后:两个定时器独立运行,Loop1每14.5秒发送一次word1,Loop2每30.5秒连续发送3个单词
  • 再次按下F7:立刻暂停所有定时发送动作
  • 按下F5:直接重载脚本重置所有运行状态

内容的提问来源于stack exchange,提问作者JLChafardet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.09 12:54:03