C# - Hangállomány lejátszása programból

forráskód letöltése
Jelen cikkünkben azt vizsgáljuk, hogy miként lehet időben párhuzamosan több, tetszőleges a Windows által ismert hangállományt lejátszani.
Első lépésként kilistázzuk a Windows Media könyvtárban található wav kiterjesztésű hangállományokat egy ListBox-ba.
      listBox1.Items.AddRange(Directory.GetFiles(@"C:\WINDOWS\Media\", "*.wav"));
Amikor a felhasználó a ListBox valamely elemén kattint, akkor indítjuk el a kiválasztott hangállomány lejátszását. Egy hangállomány megszólaltatásához a PlaySound Windows függvényt használjuk fel. Ez a függvény a winmm.dll-ben található, így ezt a függvényt külsőként kell deklarálnunk.
    [DllImport("winmm.dll")]
    public static extern bool PlaySound(string lpszName, int hModule, PlayFlags dwFlags);
Amikor a ListBox kijelölt eleme változik, akkor jön létre a SelectedIndexChanged esemény. Ezt felhasználva, nincs más teendőnk, mint meghívni a PlaySound függvényt, melynek első paraméterében a kiválasztott állománynevet adjuk meg elérési útvonallal együtt. A függvény második paraméterére most nincs szükségünk, a harmadikban megadott érték bírja rá a Windows-t arra, hogy egymással párhuzamosan játssza le a megadott hangállományokat.
    private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
    {
      PlaySound(listBox1.SelectedItem.ToString(), 0, PlayFlags.Asynchronously);
    }