2011-03-04 7 views
10

Tengo una aplicación WinForms. Esta aplicación tiene una sección de Preferencias en la que el usuario podrá seleccionar qué sonidos se reproducirán cuando se muestre una alerta.Seleccionar sonidos de Windows y reproducirlos

¿Es posible tener un cuadro combinado en el que el usuario puede seleccionar uno de los sonidos de Windows almacenados tales como "parada crítico", "bip crítica" y así sucesivamente. Estos se encuentran en la sección "Panel de control" >> "Sonidos y alertas".

Es también posible tener un botón de reproducción para probar los sonidos a cabo?

+0

El conjunto de sonidos son extensibles, tal vez notó la construcción de Visual Studio suena? Pregunte en superuser.com donde están almacenados en el registro. Intente evitar el rediseño de partes estándar de Windows. –

Respuesta

10

Prueba esto:

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

No se requiere ninguna API para sistema de reproducir sonidos acaba de escribir código como este:

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

La clase SystemSounds contiene los sonidos que el siguiente sistema predefinido:

  • asterisco
  • Bip
  • exclamación
  • mano
  • Pregunta

Todos los demás sonidos requieren que lea el sonido deseado desde el registro y reproducirlo con código como el siguiente:

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

Claro! Todos los sonidos que está buscando están disponibles a través del System.Media.SystemSounds class, donde están expuestos como public properties correspondientes a los tipos de eventos que activan los sonidos.

Además, los objetos del SystemSound class proporcionan un Play method al que puede llamar para reproducir ese sonido de forma asíncrona.

Así, por ejemplo, para reproducir el sonido "parada crítica", sólo tendría que escribir el siguiente código:

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