大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > C#技巧 > C#播放MP3源代码

C#播放MP3源代码

关键词:播放MP3MP3播放源代码C#  阅读(573) 赞(19)

[摘要]本文是对C#播放MP3源代码的讲解,对学习C#编程技术有所帮助,与大家分享。

代码如下:

 using System;
 using System.Runtime.InteropServices; 
 using System.Text; 
 using System.IO ;
 using System.Windows.Forms; 
 namespace WindowsApplication7
 {
 /// <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
 {
 }
 }
 }
 //播放  http://sosoft.cnblogs.com/
   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
 );
 }
 }
  
 
 clsMCI cm = new clsMCI();
             cm.FileName = "keleyi.mp3";//文件名
             cm.play();


相关评论