uses MMSystem;
procedure TForm1.Button1Click(Sender: TObject);
begin
sndPlaySound('C:WindowsMediasound.wav',
SND_NODEFAULT Or SND_ASYNC Or SND_LOOP);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
sndPlaySound(nil, 0); // Stops the sound
end;
4条答案
按热度按时间wqlqzqxt1#
如果要在显示MessageBox时使用Windows使用的“标准”蜂鸣音,可以调用
Windows.MessageBeep(MessageID)
,其中MessageIDMap到与MessageBox的图标ID相同的值(MB_OK、MB_ERROR等)。这样做的一个问题是,用户可以将任何声音或没有声音Map到特定的ID。
bbmckpt72#
有趣的是你会问这个问题。我只是在读关于Windows哔声的历史。美国残疾人法案迫使Beep API在过去20多年里保持不变。
Link
对于Windows 7,我们完全解决了这个问题-我们将过去包含在Beep.Sys中的所有功能移到了用户模式系统声音代理-现在,当您调用Beep()API而不是操作8254芯片时,呼叫被重新路由到实际播放声音的用户模式代理。
因此,简短的答案是:购买Windows7。较长的答案是:不要使用BEEP API。发出嘟嘟声,然后像播放其他任何声音一样播放。
cgvd09ve3#
试试看这件
7uzetpgm4#
你可以用执行et beep来代替嘟嘟声,它有一个可以编辑各种外星人声音的编辑器。
https://www.encodeteam.com/beep.htm