谢谢大虾们。

解决方案 »

  1.   

    只能播放WAV,MP3
    using System;   
    using System.Runtime.InteropServices;    
    using System.Text;    
    using System.IO ;
    namespace kkun.Util {
        /// <SUMMARY>   
        /// clsMci 的摘要说明。   
        /// </SUMMARY>   
        public class Mp3Player {
            public Mp3Player() {
                //   
                // TODO: 在此处添加构造函数逻辑   
                //   
            }        //定义API函数使用的字符串变量    
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
            private string Name = "";
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
            private string durLength = "";
            [MarshalAs(UnmanagedType.LPTStr, SizeConst = 128)]
            private string TemStr = "";
            int ilong;
            //定义播放状态枚举变量   
            public enum State {
                mPlaying = 1,
                mPuase = 2,
                mStop = 3
            };
            //结构变量   
            public struct structMCI {
                public bool bMut;
                public int iDur;
                public int iPos;
                public int iVol;
                public int iBal;
                public string iName;
                public State state;
            };        public structMCI mc = new structMCI();        //取得播放文件属性   
            public string FileName {
                get {
                    return mc.iName;
                }
                set {
                    //ASCIIEncoding asc = new ASCIIEncoding();    
                    try {
                        TemStr = "";
                        TemStr = TemStr.PadLeft(127, Convert.ToChar(" "));
                        Name = Name.PadLeft(260, Convert.ToChar(" "));
                        mc.iName = value;
                        ilong = APIClass.GetShortPathName(mc.iName, Name, Name.Length);
                        Name = GetCurrPath(Name);
                        //Name = "open " + Convert.ToChar(34) + Name + Convert.ToChar(34) + " alias media";   
                        Name = "open " + Convert.ToChar(34) + Name + Convert.ToChar(34) + " alias media";
                        ilong = APIClass.mciSendString("close all", TemStr, TemStr.Length, 0);
                        ilong = APIClass.mciSendString(Name, TemStr, TemStr.Length, 0);
                        ilong = APIClass.mciSendString("set media time format milliseconds", TemStr, TemStr.Length, 0);
                        mc.state = State.mStop;
                    } catch(Exception exp) {
                        Log.Error(exp);
                        //MessageBox.Show("出错错误!");
                    }
                }
            }
            //播放   
            public void play() {
                TemStr = "";
                TemStr = TemStr.PadLeft(127, Convert.ToChar(" "));
                APIClass.mciSendString("play media", TemStr, TemStr.Length, 0);
                mc.state = State.mPlaying;
            }
            //停止   
            public void StopT() {
                TemStr = "";
                TemStr = TemStr.PadLeft(128, Convert.ToChar(" "));
                ilong = APIClass.mciSendString("close media", TemStr, 128, 0);
                ilong = APIClass.mciSendString("close all", TemStr, 128, 0);
                mc.state = State.mStop;
            }        public void Puase() {
                TemStr = "";
                TemStr = TemStr.PadLeft(128, Convert.ToChar(" "));
                ilong = APIClass.mciSendString("pause media", TemStr, TemStr.Length, 0);
                mc.state = State.mPuase;
            }
            private string GetCurrPath(string name) {
                if (name.Length < 1)
                    return "";
                name = name.Trim();
                name = name.Substring(0, name.Length - 1);
                return name;
            }
            //总时间   
            public int Duration {
                get {
                    durLength = "";
                    durLength = durLength.PadLeft(128, Convert.ToChar(" "));
                    APIClass.mciSendString("status media length", durLength, durLength.Length, 0);
                    durLength = durLength.Trim();
                    if (durLength == "")
                        return 0;
                    return (int)(Convert.ToDouble(durLength) / 1000f);
                }
            }        //当前时间   
            public int CurrentPosition {
                get {
                    durLength = "";
                    durLength = durLength.PadLeft(128, Convert.ToChar(" "));
                    APIClass.mciSendString("status media position", durLength, durLength.Length, 0);
                    mc.iPos = (int)(Convert.ToDouble(durLength) / 1000f);
                    return mc.iPos;
                }
            }
        }    public class APIClass {
            [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
            public static extern int GetShortPathName(
             string lpszLongPath,
             string shortFile,
             int cchBuffer
            );        [DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]
            public static extern int mciSendString(
             string lpstrCommand,
             string lpstrReturnString,
             int uReturnLength,
             int hwndCallback
            );
        }
    }
     #region 播放声音
            public delegate void PlayDelegate(string file);
            /// <summary>
            /// 播放声音
            /// </summary>
            /// <param name="file"></param>
            public static void Play(string file) {
                Mp3Player mp3 = new Mp3Player();
                mp3.FileName = file;
                mp3.play();
            }
            #endregion
      

  2.   

    自带的WindowsMediaPlaer不行么?
      

  3.   

    BASS 音频库http://www.un4seen.com/