If you are looking for a way to play mp3s:
public class Sound
{
[DllImport("aygshell.dll", SetLastError = true)]
private static extern IntPtr SndPlaySync(string pszSoundFile, uint dwFlags);
[DllImport("aygshell.dll")]
private static extern uint SndOpen(string pszSoundFile, ref IntPtr phSound);
[DllImport("aygshell.dll")]
private static extern uint SndPlayAsync(IntPtr hSound, uint dwFlags);
[DllImport("aygshell.dll")]
private static extern uint SndClose(IntPtr hSound);
[DllImport("aygshell.dll")]
private static extern uint SndStop(int SoundScope, IntPtr hSound);
const int SND_SCOPE_PROCESS = 0x1;
private static Random _random = new Random();
// init startup path... where you'll hold temp mp3s
private static string _startupPath;
public static string StartupPath
{
get { return Sound._startupPath; }
set { Sound._startupPath = value; }
}
private enum SND
{
SYNC = 0x0000,
ASYNC = 0x0001,
NODEFAULT = 0x0002,
MEMORY = 0x0004,
LOOP = 0x0008,
NOSTOP = 0x0010,
NOWAIT = 0x00002000,
ALIAS = 0x00010000,
ALIAS_ID = 0x00110000,
FILENAME = 0x00020000,
RESOURCE = 0x00040004
}
public static void PlaySound(string fileName)
{
PlaySound(fileName, null);
}
public static void PlaySound(string fileName, WaitCallback callback)
{
SndStop(SND_SCOPE_PROCESS, IntPtr.Zero);
ThreadPool.QueueUserWorkItem(playSoundProcess,
new object[] {fileName, callback });
}
private static void playSoundProcess(object o)
{
object[] par = (object[])o;
string fileName = (string)par[0];
WaitCallback callback = (WaitCallback)par[1];
SndPlaySync(fileName, 0);
try
{
File.Delete(fileName);
}
catch
{ }
if (callback != null)
callback.Invoke(fileName);
}
public static void ClearSounds()
{
SndStop(SND_SCOPE_PROCESS, IntPtr.Zero);
try
{
string[] oldFiles = Directory.GetFiles(StartupPath, "*.mp3");
foreach (string f in oldFiles)
File.Delete(f);
}
catch
{ }
}
public static void PlaySound(byte[] mp3, WaitCallback callback)
{
string temp = string.Format("{0}\{1}-{2}.mp3", StartupPath, DateTime.Now.Ticks, _random.Next());
using (FileStream fs = File.Create(temp))
{
fs.Write(mp3, 0, mp3.Length);
}
PlaySound(temp, callback);
}
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…