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

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

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

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

试试这个:

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(); } 

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

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

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

  • 星号
  • 感叹

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

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

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

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

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

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