如何编写我的WinForms应用程序播放系统声音?

时间:2014-05-13 23:54:13

标签: c# winforms audio windows-7

对于C ++,有一个函数,PlaySound,可用于,呃,播放声音。 C#有这样的东西吗?我有一个应用程序,我想在它启动时播放系统声音,以宣告它的启动。

GOT是一种方式。我希望。

我想把它放在Form_Load事件的末尾:

private void Form1_Load(object sender, EventArgs e)
{
    /* 
       A bunch of configuration and initialization stuff
    */

    PlayBeepBoop();
}

private void PlayBeepBoop()
{
    PlaySystemSound("Beep");
}

3 个答案:

答案 0 :(得分:8)

有一个SystemSounds类听起来像你想要的那样:

SystemSounds.Beep.Play();

它对应于您在Windows声音设置中设置为“默认蜂鸣声”的任何“wav”文件。

答案 1 :(得分:4)

我知道播放系统声音的三种方式。

最通用的是要打印的语言不可知的\a字符,它会发出非常标准的哔声。

Console.WriteLine("\a");



第二种方法可让您直接访问少量声音,例如“感叹号”。和' Hand'。它们位于SystemSounds类(来自Systems.Media命名空间),用法非常简单。

SystemSounds.Hand.Play();



最后,最后一种方法可以让您访问所有其他Windows系统声音。您所要做的就是创建一个SoundPlayer,它也位于Systems.Media命名空间中,并手动加载声音。所有系统声音都位于同一个地方,所以很容易做到。

new System.Media.SoundPlayer(@"C:\Windows\Media\tada.wav").Play();

答案 2 :(得分:3)

您可以使用此课程以“.wav”格式播放任何声音。例如,您可以在“C:\ Windows \ Media”(Windows 7)中找到Windows声音。

public class Wav
{
    [DllImport("winmm.dll", CharSet = CharSet.Auto)]
    private static extern bool PlaySound(String lpszName, IntPtr hModule, Int32 dwFlags);

    public static bool Play(string wavFileName)
    {
        try
        {
            return PlaySound(wavFileName, IntPtr.Zero, 0);
        }
        catch
        {
            return false;
        }
    }
}