.NET Framework allows playing system sounds using a simple code:
SystemSounds.[Type].Play();
But the SystemSounds class supports only 5 types of sound notifications: Asterisk, Beep, Exclamation, Hand, Question.
There is no easy way to play other standard sounds like LowBatteryAlarm, DeviceConnect, DeviceDisconnect, MailBeep, and others from the Windows Sound Scheme.
We in BgRnD are using following function in our C# projects:
public void PlaySystemSound(string RegistryName)
{
string fileName = "";
RegistryKey key = Registry.CurrentUser.OpenSubKey(String.Format(@"AppEvents\Schemes\Apps\.Default\{0}\.Current", RegistryName), false);
try
{
fileName = (string)key.GetValue("", fileName);
}
finally
{
key.Close();
}
if (!File.Exists(fileName)) return;
SoundPlayer player = new SoundPlayer(fileName);
try
{
player.Play();
}
finally
{
player.Dispose();
}
}
The function plays the sound resource specified by the RegistryName parameter. The set of possible names you can find in the System Registry at HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default path.
You can freely use (copy and paste) this function into any of your projects.
If you still have any programming questions about playing the Windows sound notifications, feel free to ask.