以前flash 和 avi的播放器都找到了。现在
想找个音乐播放器 网上找了些 都播放不了,哪位朋友以前做过。可以提供代码?

解决方案 »

  1.   

    using System;
    using System.Runtime.InteropServices; 
    using System.Text; 
    using System.IO ; 
    namespace clsMCIPlay
    {
     /// <summary>
     /// clsMci 的摘要说明。
     /// </summary>
     public class clsMCI
     {
      public clsMCI()
      {
       //
       // 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
        {
         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
      );
     }
    }
    原文参考
      

  2.   

    直接MediaElement播放不就可以了么