【问题标题】:Selecting sounds from Windows and playing them从 Windows 中选择声音并播放
【发布时间】:2011-07-08 18:44:11
【问题描述】:

我有一个 WinForms 应用程序。这个应用程序有一个偏好部分,用户可以在其中选择在显示警报时播放哪些声音。

是否可以有一个组合框,用户可以在其中从 Windows 存储的声音中进行选择,例如“紧急停止”、“紧急哔”等。这些位于“控制面板”>>“声音和警报”部分。

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

【问题讨论】:

  • 这组声音是可扩展的,也许你注意到了 Visual Studio 的构建声音?在 superuser.com 上询问它们在注册表中的存储位置。请尽量避免重新设计 Windows 的标准部分。

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


【解决方案1】:

播放系统声音不需要任何 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");

【讨论】:

    【解决方案2】:

    试试这个:

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

    【讨论】:

      【解决方案3】:

      好的!您正在寻找的所有声音都可以通过System.Media.SystemSounds class 获得,它们在public properties 中显示为对应于触发声音的事件类型。

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

      例如,要播放“Critical Stop”声音,您只需编写以下代码:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-22
        • 2011-09-29
        • 1970-01-01
        • 2012-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多