【问题标题】:Unable to get system beep to work in C using various methods无法使用各种方法让系统哔哔声在 C 中工作
【发布时间】:2011-05-05 09:00:00
【问题描述】:

我已经尝试了 \a \7 windows.h beep 等功能,但没有任何效果。

较新的硬件没有内置此功能吗?

(控制台程序)

【问题讨论】:

  • 这是控制台程序还是 Windows 程序?
  • 对不起,我应该说,这是一个控制台程序。
  • \a 在 Windows 7 上对我来说效果很好。您可能需要更具体一些。
  • 您可能想阅读位于 (msdn.microsoft.com/en-us/library/ms679277%28VS.85%29.aspx) 的页面。显然,如果我解释正确,Windows 中就无法发出哔哔声。也许你可以改用MessageBeep(0xFFFFFFFF);

标签: c beep


【解决方案1】:

需要较新的硬件才能为残障人士发出哔声,但 Windows 7 将 Beep() 移入了实际的 Windows 音频子系统(因此请确保您的扬声器已打开)。 Larry Osterman 在他的博客上解释了这一切:https://docs.microsoft.com/en-us/archive/blogs/larryosterman/whats-up-with-the-beep-driver-in-windows-7

【讨论】:

    【解决方案2】:

    在 C 中,printf("\a") 应该生成一个警报。据我所知,这是通过 PC 扬声器完成的。在现代系统中,没有硬件 PC 扬声器。它有时由您的声卡模拟,但这是特定于操作系统和驱动程序的。简而言之,您可能不走运。

    你可以试试 MessageBeep():http://msdn.microsoft.com/en-us/library/ms680356(VS.85).aspx

    祝你好运。

    此外,您应该检查所有常见的罪魁祸首,例如声卡静音、扬声器插入/未插入等。

    【讨论】:

    • printf("\a") 在我的情况下确实有效,但仅在音量未静音时才有效。谢谢!!!
    【解决方案3】:

    首先打开一个CMD提示符并输入:

    echo ^V^G

    如果您没有听到哔声,则说明配置错误或丢失。

    【讨论】:

      【解决方案4】:

      您可以执行 Beep(frequency, duration) 并且您会收到跟随该频率的哔声。频率限制为 37-32767 赫兹。持续时间以毫秒为单位,没有限制。 例如:

      Beep(1000,3600);
      

      【讨论】:

      • 你能提供更多细节吗?这是什么 API 的一部分?需要包含什么头文件?
      • Beep()方法需要的头文件是windows.h。
      • 看来这已在原始问题中得到解决,不是可用的解决方案。
      • 你的意思是它不是一个可用的解决方案。您可以在它说 beep(int) 不起作用的问题中使用 Beep(int),但后来 Joe Scho 说他处于静音状态。如果您的机器没有静音,它应该可以工作。此外,如果您的频率为一定量,则哔声的声音会发生变化。如果它太低你不会在这里,如果它太高你也不会在这里。相信我,我以前使用过 Beep(int) 方法,它有效。如果您不相信我,请访问 MSDN 并查找 Beep() 方法。
      猜你喜欢
      • 1970-01-01
      • 2016-07-18
      • 2012-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-21
      • 1970-01-01
      • 2010-09-24
      相关资源
      最近更新 更多