我有一个WinForms应用程序。此应用程序有一个“首选项”部分,用户可以选择在显示警报时播放哪些声音。从Windows中选择声音并播放它
是否有可能有一个组合框,用户可以从存储声音的窗口,比如“关键停”,“关键嘟”等选择。这些可在“控制面板”>>“声音和警报”部分找到。
是否有可能有播放按钮来测试声音?
我有一个WinForms应用程序。此应用程序有一个“首选项”部分,用户可以选择在显示警报时播放哪些声音。从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
class,在那里他们被暴露为public properties对应于触发声音的事件类型。
此外,SystemSound
class的对象提供Play
method,您可以调用它来异步播放该声音。
因此,例如,打“临界停止”的声音,您只需编写以下代码:
System.Media.SystemSounds.Hand.Play();
集声音是可扩展的,也许你注意到Visual Studio的构建声音?询问superuser.com他们存储在注册表中的位置。尽量避免重新设计Windows的标准部分。 – 2011-03-04 13:03:37