如何一次运行两个脚本autohotkey?

时间:2013-05-26 13:37:34

标签: loops autohotkey

是否可以在整个脚本中播放循环,同时继续播放脚本的其余部分。即。

Loop
{
Send {Volume_Up 100}
}
SoundBeep, 1000

所以在上面的例子中,我们的想法是,在后台播放哔哔声的同时音量不断向上循环,我无法使其工作,我已经尝试将SoundBeep放入其中循环,但它只是发出哔哔声并且无法无限地发送音量。我知道这是一个非常低级别的问题,但我无法弄清楚。

1 个答案:

答案 0 :(得分:2)

在您的示例中,您连续发送{Volume_Up} 100次。在你的(无限!)循环之后,你让它发出一次哔声。以下是每次增加音量和提示音的代码:

Loop 20
{
    Send, {Volume_Up 5}
    SoundBeep, 1000
    Sleep, 500
}

让脚本在每次循环运行后休眠一段时间是有意义的。否则,将没有有意义的声学效果。 当然,您可以修改循环次数和连续{Volume_Up}次击键次数。

<强>更新

如果你想在增加音量的同时连续播放哔哔声并且没有短暂休息:没有简单的方法可以做到这一点,因为AHK不支持真正的多线程。无论如何,我将展示如何实现它的快速而肮脏的方法。它基于启动另一个AHK流程,其SoundBeep不会停止主流程的执行。

示例结构:

在一个目录中,我们创建了两个文件,即 main.ahk beep.ahk

beep.ahk 包含:

SoundBeep, %1%, %2%

main.ahk 包含:

Run, %A_AhkPath% "%A_ScriptDir%\beep.ahk" 750 1000
Loop 10
{
    Send, {Volume_Up 2}
    Sleep, 100
}

当你启动main.ahk时,它会首先调用beep.ahk,生成另一个进程并向其传递频率和持续时间的开始参数(此处: 750 1000 )。 beep.ahk会根据您传递的内容发出声音(注意,%1%%2%包含我们的开始参数)。然后main.ahk可以同时发送我们的音量键击,而不必等待嘟嘟声完成 这应仅用于教育目的,因为不应通过多个进程实现并行执行。如果你想在真实项目中播放背景声音,你很可能会有自己的声音文件;在这种情况下,SoundPlay将能够异步播放声音。