【问题标题】:Two AutoHotkey loops to send text at different time intervals两个 AutoHotkey 循环以不同的时间间隔发送文本
【发布时间】:2021-04-17 00:49:36
【问题描述】:

2021 年新年快乐,我是 AHK 的新手,我正在尝试获取脚本,将文本发送到窗口,我想要 2 个不同的时间间隔。

第一个循环必须每 14.5 秒发送一个单词 第二个循环必须每 30.5 秒发送三个单词(每个单词后跟 enter 键)。

这就是我所拥有的。

#SingleInstance Force

F7::
Toggle := !Toggle
SetTimer, Loop1, % (Toggle) ? 14500 : "Off"
SetTimer, Loop2, % (Toggle) ? 300500 : "Off"
return

F5::Reload

Loop1:
SendInput .word1{Enter}
return

Loop2:
SendInput .word2{Enter}
SendInput .word3{Enter}
SendInput .word4{Enter}
return

我想要的脚本是,如果我按 F7,它会启动,两个循环同时执行,将 4 个单词发送到活动窗口,然后每个循环都等待其各自的时间延迟并重复,直到我再次按 F7 F5 重新加载或完全停止它。

问题是,它没有按预期执行,它实际上首先等待“计时器”然后执行,我怎样才能做到这一点,一旦我按下 F7,它会发送 4 个字,然后输入,然后开始计时器?

我什至尝试过使用 SetTimer .......? 0 .......

但它运行一次,然后再也不会。

任何帮助将不胜感激。

干杯

JL

【问题讨论】:

    标签: loops autohotkey


    【解决方案1】:

    为什么不在启动计时器之前调用gosub

    #SingleInstance Force
    
    F7::
    Toggle := !Toggle
    if(Toggle){
        gosub Loop1
        gosub Loop2
    }
    SetTimer, Loop1, % (Toggle) ? 14500 : "Off"
    SetTimer, Loop2, % (Toggle) ? 300500 : "Off"
    return
    
    F5::Reload
    
    Loop1:
    SendInput .word1{Enter}
    return
    
    Loop2:
    SendInput .word2{Enter}
    SendInput .word3{Enter}
    SendInput .word4{Enter}
    return
    

    【讨论】:

    • 让我试一试。
    • 确实有效,现在我需要添加一个条件,这对您有意义吗? ``` ..... Counter = 0 Loop1: SendInput .word1{Enter} Counter +=1 return ...... Loop3: if Counter >= 10 SendInput .word5{Enter} Counter = 0 Return ```
    • 老实说,很难理解您在此评论中输入的代码 sn-p 究竟应该转换成什么(因为 muliline 代码降价在 cmets 中不起作用)。您介意将代码放在Pastebin 中或提出一个新问题吗?
    • 我有一些问题想解决,关于计时器,有没有办法设置时间值的“数组”,并让计时器循环通过这些值,以避免“完美设置”的计时器间隔?避免检测自动化?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多