Selecting sounds from Windows and playing them

前端 未结 3 1166
说谎
说谎 2021-02-19 16:01

I have a WinForms app. This app has a Preferences section where the user will be able to select which sounds are played when an alert is being displayed.

Is it possible

相关标签:
3条回答
  • 2021-02-19 16:31

    Try this:

        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();
        }
    
    0 讨论(0)
  • 2021-02-19 16:42

    You do not require any API to play system sounds just write code like this:

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

    The SystemSounds class contains the following predefined system sounds:

    • Asterisk
    • Beep
    • Exclamation
    • Hand
    • Question

    All other sounds require you read the desired sound from the registry and play it with code like this:

    SoundPlayer simpleSound = new SoundPlayer(@"c:\Path\To\Your\Wave\File.wav");
    
    0 讨论(0)
  • 2021-02-19 16:43

    Sure! All the sounds you're looking for are available through the System.Media.SystemSounds class, where they are exposed as public properties corresponding to the event types that trigger the sounds.

    Additionally, objects of the SystemSound class provide a Play method that you can call to play that sound asynchronously.

    So for example, to play the "Critical Stop" sound, you would simply write the following code:

    System.Media.SystemSounds.Hand.Play();
    
    0 讨论(0)
提交回复
热议问题