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

Fun*_*nky 12 .net c# system-sounds alerts winforms

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

是否有可能有一个组合框,用户可以从Windows存储的声音中选择,如"关键停止","关键哔"等.这些可在"控制面板">>"声音和警报"部分找到.

是否也可以有一个播放按钮来测试声音?

Ale*_*fie 12

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

// Plays the sound associated with the Asterisk system event.
System.Media.SystemSounds.Asterisk.Play();
Run Code Online (Sandbox Code Playgroud)

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

  • 星号
  • 感叹

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

SoundPlayer simpleSound = new SoundPlayer(@"c:\Path\To\Your\Wave\File.wav");
Run Code Online (Sandbox Code Playgroud)


Bas*_*dov 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();
    }
Run Code Online (Sandbox Code Playgroud)


Cod*_*ray 8

当然!您正在寻找的所有声音都可以通过System.Media.SystemSounds课程获得,它们作为公共属性公开,与触发声音的事件类型相对应.

此外,SystemSound该类的对象提供了一种Play方法,您可以调用该方法异步播放该声音.

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

System.Media.SystemSounds.Hand.Play();
Run Code Online (Sandbox Code Playgroud)