2008-09-16 13 views
10

¿Cómo puedo saber qué archivos de sonido ha configurado el usuario en el panel de control?¿Cómo reproducir un sonido de Windows estándar?

Ejemplo: Quiero reproducir el sonido de "Dispositivo conectado".

¿Qué API se puede usar para consultar la configuración de sonido del panel de control?

Veo que hay algunas entradas personalizadas realizadas por programas de terceros en el cuadro de diálogo del panel de control, por lo que tiene que haber una forma de que estos programas se comuniquen con la configuración de sonido global.

Editar: Gracias. No sabía que PlaySound también acaba de reproducir el archivo de sonido apropiado al especificar el nombre de la entrada del registro.

Para reproducir el "Dispositivo conntected" sonido:

::PlaySound(TEXT("DeviceConnect"), NULL, SND_ALIAS|SND_ASYNC); 
+0

Cómo/dónde se encuentra el nombre de alias apropiado del sonido? Estoy buscando, por ejemplo, el sonido "sms received". – Sam

+0

Encontré una lista en el registro en HKEY_CURRENT_USER \ AppEvents \ EventLabels. – Timbo

Respuesta

12

No Win32, pero para .NET de todos modos, puede hacerlo utilizando el siguiente en C#:

System.Media.SystemSounds.Asterisk.Play(); 
// Plays the Asterisk sound (used for Information (i)) 
// Also available: 
// Exclamation (Warning /!\) 
// Hand (aka Critical Stop - Error (X)) 
// Question (?) 
// Beep (aka Default Beep) 
+3

¿Qué tal si suena el otro sistema, como "Dispositivo conectado" o "correo nuevo"? – Anthony

+0

@Anthony No creo que puedas hacer eso dentro de .net. Deberá usar P/Invoke para eso. – Nidonocu

Cuestiones relacionadas