从Windows中选择声音并播放它们

时间:2011-03-04 11:54:36

标签: c# .net winforms alerts system-sounds

我有一个WinForms应用程序。此应用程序有一个“首选项”部分,用户可以在显示警报时选择播放哪些声音。

是否可以使用组合框,用户可以从Windows存储的声音中进行选择,例如“关键停止”,“关键响声”等。这些可以在“控制面板”>>中找到。 “声音和警报”部分。

是否也可以使用播放按钮来测试声音?

3 个答案:

答案 0 :(得分:12)

您不需要任何API来播放系统声音,只需编写如下代码:

// Plays the sound associated with the Asterisk system event.
System.Media.SystemSounds.Asterisk.Play();

SystemSounds类包含以下预定义的系统声音:

  • Asterisk
  • 哔哔
  • 感叹号
  • 问题

所有其他声音都要求您从注册表中读取所需的声音并使用以下代码播放:

SoundPlayer simpleSound = new SoundPlayer(@"c:\Path\To\Your\Wave\File.wav");

答案 1 :(得分:11)

试试这个:

    private void Form1_Load(object sender, EventArgs e)
    {

        var systemSounds = new[]
                              {
                                  System.Media.SystemSounds.Asterisk,
                                  System.Media.SystemSounds.Beep,
                                  System.Media.SystemSounds.Exclamation,
                                  System.Media.SystemSounds.Hand,
                                  System.Media.SystemSounds.Question
                              };

        comboBox1.DataSource = systemSounds;

        comboBox1.SelectedIndexChanged += new EventHandler(comboBox1_SelectedIndexChanged);
    }

    void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        ((System.Media.SystemSound)comboBox1.SelectedItem).Play();
    }

答案 2 :(得分:8)

当然!您正在寻找的所有声音均可通过System.Media.SystemSounds class获取,其中public properties显示与触发声音的事件类型相对应的声音。

此外,SystemSound class的对象提供了Play method,您可以调用它来异步播放该声音。

例如,要播放“严重停止”声音,您只需编写以下代码:

System.Media.SystemSounds.Hand.Play();