您的位置:首页 > 编程语言 > C#

播放MP3的类(C#)

2008-11-07 12:29 369 查看
using System.Runtime.InteropServices;

public static uint SND_ASYNC = 0x0001; // play asynchronously
public static uint SND_FILENAME = 0x00020000; // name is file name
[DllImport("winmm.dll")]
public static extern uint mciSendString(string lpstrCommand,
string lpstrReturnString, uint uReturnLength, uint hWndCallback);

private void button1_Click(object sender, EventArgs e)
{
mciSendString(@"close temp_alias", null, 0, 0);
mciSendString(@"open ""E:/音乐/周杰伦-东风破.mp3"" alias temp_alias",
null, 0, 0);
mciSendString("play temp_alias", null, 0, 0);
}

**********************************

具体源码如下:<转载>

  一、使用API函数mciSendString构成的媒体播放类。

程序代码

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
  );
 }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: