【问题标题】:MessageBeep() not working on 64-bit Server2008MessageBeep() 在 64 位 Server2008 上不起作用
【发布时间】:2013-07-24 15:03:51
【问题描述】:

我最近发现在 Server 2008 R2 64 位上运行的 32 位 Windows 应用程序中,通知声音(通过 C++ 调用 MessageBeep( MB_ICONEXCLAMATION ) 产生)不再产生声音。一般工作的声音和配置文件已在控制面板中加载了默认的 Windows 声音设置。在 Win7 64 位上运行良好,所以我假设它是特定于服务器的。有什么缩小范围的建议吗?

【问题讨论】:

  • 您没有使用“远程客户端”吗?在这种情况下,您应该改用“哔”。
  • 大量谷歌点击“messagebeep server 2008”。不要指望这里的任何人只是重复这一点。至少找出常见原因,并在您的问题中明确表明他们的解决方法没有帮助。
  • 将音量从 0 调高 :)
  • blogs.msdn.com/b/larryosterman/archive/2010/01/04/… 上的有趣文章,关于 Beep() 如何成为对 8254 PIC 芯片进行编程的精简包装器,它本质上归结为 现在当您调用 Beep() API 而不是操作8254 芯片将呼叫重新路由到实际播放声音的用户模式代理中。
  • 我没有使用远程客户端,但是,我用 Beep() 代替 MessageBeep() 来查看是否是问题所在(没有区别)

标签: c++ windows api windows-server-2008 win64


【解决方案1】:

可用的解决方法:

#include <MMSystem.h>
PlaySound( (LPCTSTR) SND_ALIAS_SYSTEMEXCLAMATION, NULL, SND_ALIAS_ID );

【讨论】:

  • 这不适用于我的 2019 WIN10 机器 -- Microsoft Windows [版本 10.0.17763.557],SDK“最新版本”
  • 查看控制面板、声音、更改系统声音并确保已定义它们。它在我办公室的 WIn10 Pro 机器上运行良好
  • 感谢您的回复。这意味着 SND_ALIAS_ .... 不保证声音?我是否正确假设需要更多的 WIN32 挖掘来实现功能,例如:“这台机器上有声音方案吗?”或“这个事件是否有相关的声音?” ...当 PlaySound 返回 false 时,GetLastError 消息是最有用的“错误参数”...当然,我可以在此应用程序资源中包含一个小 wav 并在没有系统声音的情况下使用它...但是...
猜你喜欢
  • 2021-09-03
  • 1970-01-01
  • 2017-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-27
  • 2011-12-29
  • 1970-01-01
相关资源
最近更新 更多