如何使用PC扬声器发出哔哔声?
我想用C#中的PC扬声器发出哔哔声。 使用以下代码时:
[DllImport("kernel32.dll", EntryPoint = "Beep", SetLastError = true, ExactSpelling = true)] public static extern bool Beep(uint frequency, uint duration); static void Main() { while (true) { Beep(1000, 500); Thread.Sleep(2000); } }
它不是通过PC扬声器发出哔哔声,而是简单地将给定频率和持续时间的声音输出到默认声音设备(例如耳机)。 使用Console.Beep()
时会发生同样的事情。
为什么?
笔记:
-
PC扬声器已打开。 当我启动电脑时,它会发出哔哔声。
-
操作系统是Windows 8。
你有任何32位Windows机器吗? 试试Console.Beep();
其中一个,PC扬声器会发出哔哔声。
在64位Windows(XP,Vista,7或8)上,执行此操作的驱动程序不存在,因此它将从插入机器的扬声器中取出。
另外,如果我错了,请纠正我,但我会冒险猜测,在您实际点击Windows 8之前,当您的PC开启时,您听到的嘟嘟声是来自您的BIOS。
从Windows 7开始,您无法再通过内置扬声器轻松发出声音。
对于Windows 7,我们完全解决了这个问题 – 我们将以前包含在Beep.Sys中的所有function都移到了用户模式系统声音代理中 – 现在当你调用Beep()API而不是操作8254芯片时,调用是重新路由到实际播放声音的用户模式代理。
[…]
还有一些意想不到的后果。 最大的问题是人们开始注意到应用程序叫做Beep()。 他们将PC放置得足够远(或者有足够的环境噪音),当他们的PC向他们发出哔哔声时他们从未注意到,直到声音从他们的扬声器发出。
详情请见此处:
您可以使用SystemSounds.Beep
,例如: SystemSounds.Beep.Play();
另请参见: SystemSounds.Beep属性