【发布时间】:2017-02-08 22:45:24
【问题描述】:
我正在尝试使用MessageBeep API 播放声音,但没有声音播放。
MessageBeep(MB_ICONINFORMATION);
MessageBeep(MB_ICONASTERISK);
MessageBeep(MB_ICONEXCLAMATION);
MessageBeep(MB_ICONERROR);
MessageBeep(MB_ICONHAND);
MessageBeep(MB_ICONINFORMATION);
MessageBeep(MB_ICONQUESTION);
MessageBeep(MB_ICONSTOP);
MessageBeep(MB_ICONWARNING);
MessageBeep(MB_OK);
- 是的,已插入扬声器
- 是的,音量调高了
- 是的,我听到了其他 MessageBeeps(UAC、默认、错误等)
- 是的,我听到来自其他应用程序的音频 (what i'm listing to right now is irocnical)
- Windows 10.0.14393 64 位
- 交互式连接(即不通过终端服务远程桌面会话)
-
函数(返回
BOOL)返回true -
是的,在控制面板的声音小程序中设置了 “默认” 声音
-
Beep服务已启动(虽然
Beep功能与此无关) -
不允许应用程序独占控制我的默认(也是唯一)声音设备:
-
Windows 不会尝试播放任何声音;您在音量混合器中看不到“输出电平”:
我错过了什么?
重现问题的示例代码
procedure TForm4.Button1Click(Sender: TObject);
begin
MessageBox(0, 'About to play sounds', 'TestApp', MB_OK);
MessageBeep(MB_ICONINFORMATION);
MessageBeep(MB_ICONASTERISK);
MessageBeep(MB_ICONEXCLAMATION);
MessageBeep(MB_ICONERROR);
MessageBeep(MB_ICONHAND);
MessageBeep(MB_ICONINFORMATION);
MessageBeep(MB_ICONQUESTION);
MessageBeep(MB_ICONSTOP);
MessageBeep(MB_ICONWARNING);
MessageBeep(MB_OK);
MessageBeep($ffffffff);
MessageBox(0, 'After playing sounds', 'TestApp', MB_OK);
end;
测试日期:
另见
阅读奖励
-
Larry Osterman: What’s up with the Beep driver in Windows 7?
Windows
Beep功能从 Windows 7 开始重新设计,不再使用 PC 扬声器,现在使用默认声音设备。
【问题讨论】:
-
它是否适用于非控制台应用程序?只是好奇。我还没有尝试过你的代码示例。
-
这不是很健全的代码。它在几微秒内通过这些 MessageBeep() 调用并终止程序。没有声音。睡一会儿听听什么。
-
@ZamronyP.Juhara 它不适用于任何应用程序。当 GUI 按钮单击期间没有声音发生时,我发现了它。人们被这个例子分心了——它也没有播放代码。
-
我已经删除了我的答案。我无法重现该问题,无论是您的控制台还是 GUI 示例。您确定问题出在 MessageBeep 而不是您的声音配置本身吗?您是否从资源管理器等其他应用程序中获得声音? (顺便说一句,您应该查看 MessageBeep 的文档;它接受您传递给它的大约一半的常量,其中一些是多余的,因为它们是彼此的同义词。我会删除所有调用,除了$FFFFFFFF;如果有效,其他人也会。)
-
@KenWhite 我收到 UAC、默认、UAC 插入和删除声音。我以为它一定是我的电脑;但我在两台同事机器上试过。完全有可能他们的机器也处于不受支持的硬件配置:我们都可以听到声音,我们都可以听到其他标准通知声音,但 MessageBeep 不起作用。