是否可以在整个脚本中播放循环,同时继续播放脚本的其余部分。即。
Loop
{
Send {Volume_Up 100}
}
SoundBeep, 1000
所以在上面的例子中,我们的想法是,在后台播放哔哔声的同时音量不断向上循环,我无法使其工作,我已经尝试将SoundBeep放入其中循环,但它只是发出哔哔声并且无法无限地发送音量。我知道这是一个非常低级别的问题,但我无法弄清楚。
答案 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将能够异步播放声音。