如何更换Windows.Beep与现代的哔哔声

时间:2010-06-15 07:05:41

标签: delphi

如何更换Windows.Beep带有可调音量扬声器的现代哔声?

4 个答案:

答案 0 :(得分:9)

有趣的你应该问。我刚刚读到了关于窗口蜂鸣声的历史。美国残疾人法案已经迫使Beep API在过去的20年里没有改变。

http://blogs.msdn.com/b/larryosterman/archive/2010/01/04/what-s-up-with-the-beep-driver-in-windows-7.aspx

  

对于Windows 7,我们解决了这个问题   完全 - 我们搬了所有的   以前的功能   包含在Beep.Sys中的用户   模式系统声音代理 - 现在何时   你调用Beep()API而不是   操纵8254芯片即可   重新路由到用户模式代理中   实际上播放声音。

所以简短的回答是:获取Windows 7。 更长的答案是:不要使用哔哔api。发出哔哔声并像播放任何其他噪音一样播放。

答案 1 :(得分:9)

如果要在显示MessageBox时使用Windows使用的“标准”蜂鸣声,可以调用Windows.MessageBeep(MessageID),其中 MessageID 映射到与MessageBox的图标ID相同的值(MB_OK,MB_ERROR等)。

这方面的一个问题是用户可以将任何声音映射到特定ID。或者

答案 2 :(得分:8)

试试这个

uses MMSystem;

procedure TForm1.Button1Click(Sender: TObject);
begin
  sndPlaySound('C:\Windows\Media\sound.wav',
    SND_NODEFAULT Or SND_ASYNC Or SND_LOOP);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  sndPlaySound(nil, 0); // Stops the sound
end;

答案 3 :(得分:0)

您可以使用执行ET BEEP替换蜂鸣声呼叫,ET BEEP具有各种外星人声音的编辑器。

https://www.encodeteam.com/beep.htm