PlaySound (winmm)
Last changed: -71.188.245.175

.
Summary
TODO - a short description

C# Signature:

[DllImport("winmm.dll", CharSet=CharSet.Auto)]
static extern bool PlaySound(
    IntPtr pszSound,
    IntPtr hmod,
    PlaySoundFlags fdwSound);

[DllImport("winmm.dll", CharSet=CharSet.Auto)]
static extern bool PlaySoundString(
    string pszSound,
    IntPtr hmod,
    PlaySoundFlags fdwSound);

[Flags]
public enum PlaySoundFlags
{
    SND_SYNC = 0x0000,        // play synchronously (default)
    SND_ASYNC = 0x0001,    // play asynchronously
    SND_NODEFAULT = 0x0002,    // silence (!default) if sound not found
    SND_MEMORY = 0x0004,    // pszSound points to a memory file
    SND_LOOP = 0x0008,        // loop the sound until next sndPlaySound
    SND_NOSTOP = 0x0010,    // don't stop any currently playing sound
    SND_NOWAIT = 0x00002000,    // don't wait if the driver is busy
    SND_ALIAS = 0x00010000,    // name is a registry alias
    SND_ALIAS_ID = 0x00110000,    // alias is a predefined id
    SND_FILENAME = 0x00020000,    // name is file name
    SND_RESOURCE = 0x00040004    // name is resource name or atom
}

VB Signature:

Public Declare Auto Function PlaySound Lib "winmm.dll" Alias "PlaySound"( _
    ByVal pszSound As IntPtr,
    ByVal hmod As IntPtr,
    ByVal fdwSound As PlaySoundFlags) _
As Boolean

Notes:

[2004-10-15 - Nicholas Paldino - mvp@spam.guard.caspershouse.com]
Cleaned up the declarations, also changed the string parameter to an IntPtr, and removed UIntPtr parameter.  Reverted
to IntPtr in the event that the sound is in memory, or in a resource.  To play a sound from a filename, use the PlaySoundString
declaration, which will allow you to pass a string for the first parameter.

Tips & Tricks:

Sometimes when using SND_ASYNC, your sound will be clipped at the beginning or the end of the sound. One workaround is to play all sounds in another thread using SND_SYNC.

Sample Code:

    public static void Play (string strFileName)
    {
        PlaySound (strFileName, IntPtr.Zero, SoundFlags.SND_FILENAME | SoundFlags.SND_ASYNC);
    }

Alternative Managed API:

Do you know one? Please contribute it!

Documentation
PlaySound on MSDN