如何在C#中发出计算机提示音?


105

如何在不使用外部扬声器的情况下使用C#使计算机的内部扬声器发出蜂鸣声?

Answers:


193

在.Net 2.0中,可以使用Console.Beep()。

// Default beep
Console.Beep();

您还可以指定提示音的频率和持续时间(以毫秒为单位)。

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

有关更多信息,请参见http://msdn.microsoft.com/zh-cn/library/8hftfeyw%28v=vs.110%29.aspx


11
我刚刚在Win 7 x64 RC中进行了测试,尽管内部扬声器没有发出蜂鸣声,但是当我插入并打开扬声器时,仍然会通过扬声器发出蜂鸣声。我想这只是内部扬声器,不会发出哔哔声。感谢您的信息@Lck。
a_hardin


3
它应该可以在x64上运行,但是声音会通过普通扬声器发出(可以将其静音)。blogs.msdn.com/larryosterman/archive/2010/01/04/...
Tarnay卡尔曼

我有x86,但内部扬声器没有声音播放!仅外接扬声器?
拉菲克·巴里

1
@LorenzCK那是...不是100%正确?我拥有Win7 64,并且能够Beep()通过外部扬声器听到的全范围频率。但是,对于内部+1,我从未意识到。
BK

146

您还可以使用相对未使用的:

    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/zh-cn/library/system.media.systemsounds(v=vs.110).aspx中找到有关此声音的文档


不幸的是,这些系统声音需要外接扬声器,不能总是依靠它们。知道这些绝对是一件好事!
a_hardin

1
现在知道x64版本的Windows需要扬声器才能听到Console.Beep(),这些选项也将正常工作。
2009年

4
我的带有内置扬声器的笔记本电脑上的Vista x64无法播放Console.Beep(),但这些都很好。
安迪·邓特



7

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

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


但是不能保证它可以通过声卡工作/发出哔声。在我的Windows 10机器上没有蜂鸣声-声卡工作正常
hfrmobile

4

我只是在为自己寻找解决方案时遇到了这个问题。您可能会考虑通过运行一些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)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.