我有以下代码:
#include <windows.h>
#include <stdio.h>
int main(void)
{
Beep(523, 500);
Sleep(1000);
return 0;
}
我正在使用 MinGW 和 Dev-C++ 编译它。我的问题是我什么都听不见,虽然我没有收到错误。我有 Windows 7。有什么想法吗?
打开你的扬声器。如果它们已经打开,请调高音量。如果您的计算机上没有安装扬声器和声卡,请获取并安装它们,然后再次尝试运行该程序。
所有这些都是在 Windows 7 上听到该Beep
功能所必需的。它不再从内置硬件系统扬声器播放声音。而是将声音传递给用户会话的默认声音设备。在标准的本地用户会话中,那将是您的声卡。文档在“备注”部分解释了这一重要细节:
很久以前,所有 PC 计算机共享一个通用的 8254 可编程间隔定时器芯片,用于生成原始声音。该
Beep
函数是专门为在该硬件上发出哔哔声而编写的。
Beep
在这些较旧的系统上,静音和音量控制对;没有影响。你仍然会听到音调。要使音调静音,您使用了以下命令:net stop beep sc config beep start= disabled
从那时起,声卡已成为几乎所有 PC 计算机的标准设备。随着声卡变得越来越普遍,制造商开始从计算机中移除旧的计时器芯片。这些芯片也被排除在服务器计算机的设计之外。结果是在
Beep
没有芯片的所有计算机上都无法工作。这没关系,因为大多数开发人员已经开始调用使用默认声音设备而不是 8254 芯片的MessageBeep
函数。最终由于缺乏与之通信的硬件,
Beep
在 Windows Vista 和 Windows XP 64 位版本中不再支持。在 Windows 7 中,Beep 被重写以将哔声传递给会话的默认声音设备。这通常是声卡,除非在终端服务下运行,在这种情况下会在客户端上呈现哔声。