Odtwarzanie dźwięku za pomocą MCIXion pisał ostatnio o odtwarzaniu dźwięku za pomocą PlaySound. Jak dla mnie, ta metoda ma jedną ogromną wadę -- nie pozwala na odtworzenie wielu dźwięków jednocześnie.
Okazuje się też, że dźwięk możemy odtwarzać za pomocą MCI (Media Control Interface). W MSDN można znaleźć szczegółowe informacje na temat użycia. W dalszej części prosty przykład, który potrafi coś odtworzyć.
using System;
using System.Text;
using System.Runtime.InteropServices;
namespace Media
{
class MCISoundPlayer
{
public MCISoundPlayer() {}
[DllImport("winmm.dll")]
private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);
static int lastAliasNumber = 0;
public void Play(string fileName)
{
string alias = string.Format("MCIAlias{0}", lastAliasNumber++);
string commandOpen = string.Format("open \"{0}\" type waveaudio alias {1}", fileName, alias);
string commandPlay = string.Format("play {0}", alias);
mciSendString(commandOpen, null, 0, IntPtr.Zero);
mciSendString(commandPlay, null, 0, IntPtr.Zero);
}
}
}
Zmieniając waveaudio na mpegvideo możemy nawet odtworzyć plik mp3 ;)