【发布时间】:2010-09-24 04:23:16
【问题描述】:
如何在没有外部扬声器的情况下使计算机的内部扬声器在 C# 中发出哔哔声?
【问题讨论】:
如何在没有外部扬声器的情况下使计算机的内部扬声器在 C# 中发出哔哔声?
【问题讨论】:
解决办法是,
Console.Beep
【讨论】:
试试这个
Console.WriteLine("\a")
【讨论】:
在 .Net 2.0 中,您可以使用 Console.Beep()。
// Default beep
Console.Beep();
您还可以指定哔声的频率和长度(以毫秒为单位)。
// Beep at 5000 Hz for 1 second
Console.Beep(5000, 1000);
更多信息请参考http://msdn.microsoft.com/en-us/library/8hftfeyw%28v=vs.110%29.aspx
【讨论】:
Beep() 的全部频率。但是,内部部分 +1,我从来没有意识到这一点。
你也可以使用比较没用的:
System.Media.SystemSounds.Beep.Play();
System.Media.SystemSounds.Asterisk.Play();
System.Media.SystemSounds.Exclamation.Play();
System.Media.SystemSounds.Question.Play();
System.Media.SystemSounds.Hand.Play();
http://msdn.microsoft.com/en-us/library/system.media.systemsounds(v=vs.110).aspx 中提供了有关此声音的文档
【讨论】:
已确认 Windows 7 和更新版本(至少 64 位或两者兼有)不使用系统扬声器,而是将呼叫路由到默认声音设备。
因此,在 win7/8/10 中使用system.beep() 将不会使用内部系统扬声器产生声音。相反,如果有可用的外部扬声器,您会听到哔声。
【讨论】:
我在为自己寻找解决方案时遇到了这个问题。 您可以考虑通过运行一些 kernel32 的东西来调用系统哔声功能。
using System.Runtime.InteropServices;
[DllImport("kernel32.dll")]
public static extern bool Beep(int freq, int duration);
public static void TestBeeps()
{
Beep(1000, 1600); //low frequency, longer sound
Beep(2000, 400); //high frequency, short sound
}
这和你运行 powershell 一样:
[console]::beep(1000, 1600)
[console]::beep(2000, 400)
【讨论】: