c#中操作MP3的类

本文共有4420个字,关键词:
/*这是一个在网上找的在c#中操作MP3的类
  • 由SharpDevelop创建。
  • 用户: rong
  • 日期: 2015-01-21
  • 时间: 20:49
  • 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
    */

using System;

using System.Runtime.InteropServices;

using System.Text;

using System.IO ;

using System.Windows.Forms;

namespace MP3player

{

/// <summary>

/// clsMci 的摘要说明。
/// clsMCI cm = new clsMCI();
/// cm.FileName = "别看我只是一只羊.mp3";
/// cm.play();
///



/// </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

            {

            }

        }

    }

    //播放

    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

    );

}

}

老王

(๑>ڡ<)☆谢谢老板~

使用微信扫描二维码完成支付

版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。
添加新评论
暂无评论