13
votes

How do I find out which sound files the user has configured in the control panel?

Example: I want to play the sound for "Device connected".

Which API can be used to query the control panel sound settings?

I see that there are some custom entries made by third party programs in the control panel dialog, so there has to be a way for these programs to communicate with the global sound settings.

Edit: Thank you. I did not know that PlaySound also just played appropriate sound file when specifying the name of the registry entry.

To play the "Device Conntected" sound:

::PlaySound( TEXT("DeviceConnect"), NULL, SND_ALIAS|SND_ASYNC );
3
How/where did you find the appropiate alias name of the sound? I'm looking for example for the "sms received" sound. - Sam
I found a list in the registry at HKEY_CURRENT_USER\AppEvents\EventLabels. - Timbo

3 Answers

14
votes
13
votes

Not Win32, but for .net anyway, you can do this using the following in 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)