How can I make the computer beep in C#?

How do I make the computer's internal speaker beep in C# without external speakers?

139832 次浏览

解决办法就是,

Console.Beep

打印 贝尔的角色(ASCII 码7)。可以使用警报/报警 1中的转义序列 \a

Console.WriteLine("\a")

1 \b表示退格

在.Net 2.0中,您可以使用 Console.Beep

// Default beep
Console.Beep();

You can also specify the frequency and length of the beep in milliseconds.

// Beep at 5000 Hz for 1 second
Console.Beep(5000, 1000);

使用 System.Media.SystemSounds获得各种事件的声音,然后 演奏他们:

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();

经确认,Windows7和更新的版本(至少64位或两者兼有) 不要使用系统扬声器,而不是他们路由到默认声音设备的呼叫。

因此,在 win7/8/10中使用 system.beep()不会使用内部系统扬声器产生声音。相反,如果外部扬声器可用的话,你会听到它们发出的嘟嘟声。

我只是在为自己寻找解决方案的过程中偶然发现了这个问题。 您可以考虑通过运行一些 kernel 32内容来调用 system beep 函数。

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)