有趣的你应该问.我刚刚读到了关于窗口蜂鸣声的历史.美国残疾人法案已经迫使Beep API在过去的20年里没有改变.
对于Windows 7,我们完全解决了这个问题 - 我们将以前包含在Beep.Sys中的所有功能都移到了用户模式系统声音代理中 - 现在当你调用Beep()API而不是操作8254芯片时,调用是重新路由到实际播放声音的用户模式代理.
所以简短的回答是:获取Windows 7.更长的答案是:不要使用beep api.发出哔哔声并像播放任何其他噪音一样播放.
如果你想使用时,会显示一个消息Windows上使用的"标准"的蜂鸣声,你可以调用Windows.MessageBeep(MessageID)
其中的MessageID映射到相同的值图标IDS的的MessageBox(MB_OK,MB_ERROR等).
这方面的一个问题是用户可以将任何声音映射到特定ID.
试试这个吧
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;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6862 次 |
最近记录: |