114

如何在没有外部扬声器的情况下使计算机的内部扬声器在 C# 中发出哔哔声?

4

6 回答 6

199

在 .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

于 2008-11-26T15:41:02.337 回答
155

你也可以使用相对未使用的:

    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中找到

于 2008-11-26T15:47:01.607 回答
23

解决方案是,

Console.Beep
于 2008-11-26T15:40:21.653 回答
15

试试这个

Console.WriteLine("\a")

于 2008-11-26T15:40:27.563 回答
9

已确认Windows 7 和更新版本(至少 64 位或两者)不使用系统扬声器,而是将呼叫路由到默认声音设备。

因此,system.beep()在 win7/8/10 中使用不会使用内部系统扬声器产生声音。相反,如果外部扬声器可用,您会听到哔哔声。

于 2016-07-04T04:30:22.703 回答
7

我只是在为自己寻找解决方案时遇到了这个问题。您可能会考虑通过运行一些 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)
于 2017-10-31T11:11:24.707 回答