Mega Code Archive

 
Categories / Delphi / System
 

Enumerating and Playing System Sounds from Delphi code

Title: Enumerating and Playing System Sounds from Delphi code To play a system sound ("application even" or "system even" as called by MS), you can call the PlaySound API function, available in the mmsystem unit. The PlaySound function plays a sound specified by the given filename, resource, or system event. System event are, in general, associated with a sound in the registry. Registered system sounds are located under the "AppEvents\Apps" key under HKEY_CURRENT_USER in the Registry database. Here's how to play the "System Question" system sound: uses MMSystem, ... PlaySound('SystemQuestion', 0, SND_ALIAS or SND_ASYNC) ; Note: Using the SND_ASYNC flag the sound is played asynchronously and PlaySound returns immediately after beginning the sound playback. SND_ALIAS tells the PlaySound function that the first parameter is a system-event alias. Note (also): the actual sound refrences are stored in HKEY_CURRENT_USER\AppEvents\Schemes\Apps\.Default. Listing all System/Event Sounds Now that you know how to play a system sound, here's how to get the list of all the registered sounds in Windows: Drop a TButton (name: "Button1") and a TListBox (name: "ListBox1") on a Delphi form (name: "SystemSoundPlayerForm"). Handle the Form's OnCreate and Button's OnClick events as: uses MMSystem, Registry, ... //Button1 ... OnClikc procedure TSystemSoundPlayerForm.Button1Click(Sender: TObject) ; var soundAlias : string; begin if ListBox1.ItemIndex = -1 then begin ShowMessage('Select a sound alias from the list...') ; Exit; end; soundAlias := ListBox1.Items[ListBox1.ItemIndex]; PlaySound(PAnsiChar(soundAlias), 0, SND_ALIAS or SND_ASYNC) ; end; //SystemSoundPlayerForm ... OnCreate procedure TSystemSoundPlayerForm.FormCreate(Sender: TObject) ; var reg : TRegistry; begin reg := TRegistry.Create; try reg.RootKey := HKEY_CURRENT_USER; reg.OpenKeyReadOnly('\AppEvents\EventLabels') ; reg.GetKeyNames(ListBox1.Items) ; finally reg.Free; end; end; Select a sound alias from the list and hit the play button ...