是否可以在整个脚本中循环播放,同时继续播放脚本的其余部分。IE
Loop
{
Send {Volume_Up 100}
}
SoundBeep, 1000
所以在上面的例子中,想法是音量不断向上循环,同时在后台播放哔哔声,我无法让它工作,我尝试将 SoundBeep 放在循环中,但它只是哔哔声并且不会无限增加音量。我知道这是一个相当低级的问题,但我无法弄清楚。
是否可以在整个脚本中循环播放,同时继续播放脚本的其余部分。IE
Loop
{
Send {Volume_Up 100}
}
SoundBeep, 1000
所以在上面的例子中,想法是音量不断向上循环,同时在后台播放哔哔声,我无法让它工作,我尝试将 SoundBeep 放在循环中,但它只是哔哔声并且不会无限增加音量。我知道这是一个相当低级的问题,但我无法弄清楚。
在您的示例中,您{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将能够异步播放声音。