e股脑电脑教程网
  • 首 页
  • 操作系统
  • 应用软件
  • 下载工具
  • 影音视频
  • 办公软件
  • 媒体制作
  • 网站建设
  • 平面设计
  • 数据库
  • 程序开发
  • 视频教程
编辑推荐: | 文章搜索:
您现在的位置: e股脑 >> 程序开发 >> C教程 >> C#中用API实现MP3等音频文件的播放类 >> 教程正文
 
教程搜索
 
 
相关教程
  • 深入剖析C#继承机制
  • C#如何获得 WINDOWS 版本
  • C# 编码规范和编程好习惯
  • 获得汉字字符串拼音首字母 C#版
  • 利用C#实现标准的 Dispose模式
  • 在C#中应用哈希表(Hashtable)
  • 利用Delphi 2005 编写C#应用程序
  • 对C#泛型中的new()约束的一点思考
  • 身份证15To18 的算法(C#)
  • .Net下WebMethod属性
  • C#实现的18位身份证格式验证算法
  • C#中用API实现MP3等音频文件的播放类
  • 用C#把文件转换为XML
  • 如何得到硬盘序列号
  • Raw Socket编程实现网络封包监视
  • C#2.0 对AD的简单操作
 
 

图文教程


  • 将其他Email邮件转移到Gmail邮箱中

  • Vista破解TCP/IP后进不了系统咋办

  • Vista下用DriveSpacio查看磁盘空间

  • Windows抢了谁的饭碗 非主流操作系统To

  • 地球还是火星 平常心看“非主流”
 
 
赞 助 商
 
 
C#中用API实现MP3等音频文件的播放类
  • 来源:e股脑
  • 点击次数:
  • 更新时间:2007-8-9

C#没有提供播放MP3等音频文件的类,要编写播放MP3等音频文件程序,必须使用第三方控件或类。本文使用API函数mciSendString,编写一个播放MP3等音频文件的类。

具体源码如下:

一、使用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 = CharSe

1 2 3 下一页
  • 上一篇教程: 用C#把文件转换为XML
  • 下一篇教程: C#实现的18位身份证格式验证算法
  •  

    关于本站 | 广告联系 | 版权声明 | 使用帮助

    Copyright © 2004-2008 www.egunao.com All rights reserved.