1

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

Loop
{
Send {Volume_Up 100}
}
SoundBeep, 1000

所以在上面的例子中,想法是音量不断向上循环,同时在后台播放哔哔声,我无法让它工作,我尝试将 SoundBeep 放在循环中,但它只是哔哔声并且不会无限增加音量。我知道这是一个相当低级的问题,但我无法弄清楚。

4

1 回答 1

2

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

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

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

更新:

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

示例结构:

在一个目录下,我们创建两个文件,分别是 main.ahkbeep.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,生成另一个进程并将频率和持续时间的启动参数传递给它(这里:7501000)。beep.ahk 只会根据您传递的内容发出声音(注意,它%1%包含%2%我们的启动参数)。然后 main.ahk 可以同时发送我们的音量键击,而无需等待哔声完成。
这应该只用于教育目的,因为不应该通过多个进程来实现并行执行。如果您想在实际项目中播放背景声音,您很可能会有自己的声音文件;在这种情况下,SoundPlay将能够异步播放声音。

于 2013-05-26T16:47:26.900 回答