为什么在 Windows 7 中调用 Beep 函数后我听不到任何声音?



我有以下代码:

#include <windows.h>
#include <stdio.h>
int main(void)
{
        Beep(523, 500);
        Sleep(1000);
        return 0;
}

我正在使用带有Dev-C++的MinGW进行编译。我的问题是我听不到任何东西,尽管我没有收到错误。我有Windows 7。有什么想法吗?

打开扬声器。如果它们已打开,请调高音量。如果您的计算机上没有安装扬声器和声卡,请获取一些并安装它们,然后再次尝试运行该程序。

所有这些东西都需要从Windows 7上的Beep功能中听到任何内容。它不再播放来自内置硬件系统扬声器的声音。相反,声音将传递到用户会话的默认声音设备。在标准的本地用户会话中,这将是您的声卡。该文档在"备注"部分中解释了以下重要细节:

很久以前,所有PC计算机共享一个通用的8254可编程间隔定时器芯片,用于生成原始声音。Beep函数是专门为在该硬件上发出哔哔声而编写的。

在这些较旧的系统上,静音和音量控制对Beep没有影响;你仍然会听到提示音。要使提示音静音,您使用了以下命令:

net stop beep  
sc config beep start= disabled

从那时起,声卡已成为几乎所有PC计算机的标准设备。随着声卡变得越来越普遍,制造商开始从计算机中移除旧的计时器芯片。这些芯片也被排除在服务器计算机的设计之外。结果是Beep无法在没有芯片的所有计算机上工作。这没关系,因为大多数开发人员已经转向调用MessageBeep函数,该函数使用默认声音设备而不是 8254 芯片。

最终,由于缺乏可与之通信的硬件,Windows Vista和Windows XP 64位版放弃了对Beep的支持。

在 Windows 7 中,哔哔声被重写为将哔声传递到会话的默认声音设备。这通常是声卡,除非在终端服务下运行时,在这种情况下,将在客户端上呈现蜂鸣音。

最新更新