代码如下:

  1. using System;
  2. using System.Runtime.InteropServices;
  3. using System.Text;
  4. using System.IO ;
  5. using System.Windows.Forms;
  6. namespace WindowsApplication7
  7. {
  8. /// <summary>
  9. /// clsMci 的摘要说明。
  10. /// </summary>
  11.  public class clsMCI
  12. {
  13. public clsMCI()
  14. {
  15. //
  16. // TODO: 在此处添加构造函数逻辑
  17. //
  18.   }
  19.  
  20. //定义API函数使用的字符串变量
  21.   [MarshalAs(UnmanagedType.ByValTStr,SizeConst=)]
  22. private string Name = "" ;
  23. [MarshalAs(UnmanagedType.ByValTStr,SizeConst=)]
  24. private string durLength = "" ;
  25. [MarshalAs(UnmanagedType.LPTStr,SizeConst=)]
  26. private string TemStr ="";
  27. int ilong;
  28. //定义播放状态枚举变量
  29.   public enum State
  30. {
  31. mPlaying = ,
  32. mPuase = ,
  33. mStop =
  34. };
  35. //结构变量
  36.   public struct structMCI
  37. {
  38. public bool bMut;
  39. public int iDur;
  40. public int iPos;
  41. public int iVol;
  42. public int iBal;
  43. public string iName;
  44. public State state;
  45. };
  46.  
  47. public structMCI mc =new structMCI() ;
  48.  
  49. //取得播放文件属性
  50.   public string FileName
  51. {
  52. get
  53. {
  54. return mc.iName;
  55. }
  56. set
  57. {
  58. //ASCIIEncoding asc = new ASCIIEncoding();
  59.     try
  60. {
  61. TemStr ="";
  62. TemStr = TemStr.PadLeft(,Convert.ToChar(" "));
  63. Name = Name.PadLeft(,Convert.ToChar(" ")) ;
  64. mc.iName = value;
  65. ilong = APIClass.GetShortPathName(mc.iName,Name, Name.Length);
  66. Name = GetCurrPath(Name);
  67. //Name = "open " + Convert.ToChar(34) + Name + Convert.ToChar(34) + " alias media";
  68.      Name = "open " + Convert.ToChar() + Name + Convert.ToChar() + " alias media";
  69. ilong = APIClass.mciSendString("close all", TemStr, TemStr.Length , );
  70. ilong = APIClass.mciSendString( Name, TemStr, TemStr.Length, );
  71. ilong = APIClass.mciSendString("set media time format milliseconds", TemStr, TemStr.Length , );
  72. mc.state = State.mStop;
  73. }
  74. catch
  75. {
  76. }
  77. }
  78. }
  79. //播放 http://sosoft.cnblogs.com/
  80.   public void play()
  81. {
  82. TemStr = "";
  83. TemStr = TemStr.PadLeft(,Convert.ToChar(" "));
  84. APIClass.mciSendString("play media", TemStr, TemStr.Length , );
  85. mc.state = State.mPlaying ;
  86. }
  87. //停止
  88.   public void StopT()
  89. {
  90. TemStr = "";
  91. TemStr = TemStr.PadLeft(,Convert.ToChar(" "));
  92. ilong = APIClass.mciSendString("close media", TemStr, , );
  93. ilong = APIClass.mciSendString("close all", TemStr, , );
  94. mc.state = State.mStop ;
  95. }
  96.  
  97. public void Puase()
  98. {
  99. TemStr = "";
  100. TemStr = TemStr.PadLeft(,Convert.ToChar(" "));
  101. ilong = APIClass.mciSendString("pause media", TemStr, TemStr.Length, );
  102. mc.state = State.mPuase ;
  103. }
  104. private string GetCurrPath(string name)
  105. {
  106. if(name.Length <) return "";
  107. name = name.Trim();
  108. name = name.Substring(,name.Length-);
  109. return name;
  110. }
  111. //总时间
  112.   public int Duration
  113. {
  114. get
  115. {
  116. durLength = "";
  117. durLength = durLength.PadLeft(,Convert.ToChar(" ")) ;
  118. APIClass.mciSendString("status media length", durLength, durLength.Length, );
  119. durLength = durLength.Trim();
  120. if(durLength == "") return ;
  121. return (int)(Convert.ToDouble(durLength) / 1000f);
  122. }
  123. }
  124.  
  125. //当前时间
  126.   public int CurrentPosition
  127. {
  128. get
  129. {
  130. durLength = "";
  131. durLength = durLength.PadLeft(,Convert.ToChar(" ")) ;
  132. APIClass.mciSendString("status media position", durLength, durLength.Length, );
  133. mc.iPos = (int)(Convert.ToDouble(durLength) / 1000f);
  134. return mc.iPos;
  135. }
  136. }
  137. }
  138.  
  139. public class APIClass
  140. {
  141. [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
  142. public static extern int GetShortPathName (
  143. string lpszLongPath,
  144. string shortFile,
  145. int cchBuffer
  146. );
  147.  
  148. [DllImport("winmm.dll", EntryPoint="mciSendString", CharSet = CharSet.Auto)]
  149. public static extern int mciSendString (
  150. string lpstrCommand,
  151. string lpstrReturnString,
  152. int uReturnLength,
  153. int hwndCallback
  154. );
  155. }
  156. }
  157.  
  158. clsMCI cm = new clsMCI();
  159. cm.FileName = "keleyi.mp3";//文件名
  160. cm.play();

C#播放MP3源代码的更多相关文章

  1. 使用openal与mpg123播放MP3,附带工程文件(转)

    使用openal与mpg123播放MP3,附带工程文件 使用openal和mpg123播放MP3文件 使用静态编译,相关文件都在附件里 相关工程文件:openal_mpg123_player.7z 使 ...

  2. Rhybox播放mp3, smplayer如何播放flv等等

    [[ 支持mp3,在终端: sudo apt-get install gstreamer0.10-*plugins-ugly 支持wma,在终端: sudo apt-get install gstre ...

  3. 读取SD卡文件夹下的MP3文件和播放MP3文件

    首先获取SD卡path路径下的所有的MP3文件,并将文件名和文件大小存入List数组(此代码定义在FileUtils类中): /** * 读取目录中的Mp3文件的名字和大小 */ public Lis ...

  4. 遭遇flash播放mp3诡异问题

    在部分ie10+flash player 播放mp3,播放第二句话时,中断无法正常播放,(客户的机器上),自己公司的机器测试了几个,都没发现这个问题.其它浏览器(chrome,firefox)也没发现 ...

  5. Android命令行播放MP3音乐

    /*************************************************************************** * Android命令行播放MP3音乐 * 说 ...

  6. ios开发——实用技术篇Swift篇&播放MP3

    播放MP3 // MARK: - 播放MP3 /*----- mp3 ------*/ //定时器- func updateTime() { //获取音频播放器播放的进度,单位秒 var cuTime ...

  7. 在C语言控制台程序中播放MP3音乐

    游戏没有声音多单调. 这里做一个简单的范例,用 mciSendString 函数播放 MP3 格式的音乐,先看看代码吧: // 编译该范例前,请把 background.mp3 放在项目文件夹中 // ...

  8. ubuntu 13.10 Rhythmbox不能播放mp3 和中文乱码的问题

    1.ubuntu 13.10 Rhythmbox不能播放mp3的解决方法 软件中心搜索(ubuntu额外的版权受限软件)不带括号 2.中文乱码问题解决方法: 终端顺序操作 : 1.  sudo ged ...

  9. Ionic2 播放mp3功能实现

    在开发app的过程中有需要播放mp3的功能,一直想实现,但苦于具体的困难一直未能实现,经过一段时间的资料查询和测试,最终摸索出来,现记录如下: 1.最重要的是安装第三方插件ionic-audio,开源 ...

随机推荐

  1. 分布式数据库中的Paxos 算法

    分布式数据库中的Paxos 算法 http://baike.baidu.com/link?url=ChmfvtXRZQl7X1VmRU6ypsmZ4b4MbQX1pelw_VenRLnFpq7rMvY ...

  2. HTML5- Canvas入门(三)

    前两章我们掌握了线段.矩形和多边形的绘制方法,今天我们主要是学习如何绘制圆弧和贝塞尔曲线. 圆弧的绘制 圆弧可以理解为一个圆上的某部分线段,在canvas中,绘制一条圆弧的语法如下: ctx.arc( ...

  3. 收集最好的Mac软件和使用方法

    MacBook 初体验 作者是刚从Windows下转到mac时写的,这篇文章对也主要介绍了Mac下开发环境的部署.软件的安装和卸载.常用快捷键.文件系统的介绍. http://liujiacai.ne ...

  4. MySQL MVCC(多版本并发控制)

    概述 为了提高并发MySQL加入了多版本并发控制,它把旧版本记录保存在了共享表空间(undolog),当事务提交之后将重做日志写入磁盘(前提innodb_flush_log_at_trx_commit ...

  5. %~dp0是什么意思

    转载自 www.cnblogs.com/yxsylyh 转载内容如下: cd /D %~dp0的意思如下: 更改当前目录为批处理本身的目录 比如你有个批处理a.bat在D:\qq文件夹下 a.bat内 ...

  6. SQL Azure (16) 创建PaaS SQL Azure V12数据库

    <Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China 最新的Azure PaaS SQL Database(SQL Azu ...

  7. 入手Invicta 8926 OB潜水自动机械腕表

    前个月前就想入手一款手表了,之前在关注和学习.询问他人选哪样的表好,前些天还在看精工Seiko机械表系列,今凌晨有朋友给我推荐这款Invicta 8926系列手表,我一看便喜欢了. 在网上也是搜索了很 ...

  8. EF优缺点的理解

    原先用的是三层架构中ADO.NET做底层开发,纯手工sql语句拼装.后来遇到一个MVC+EF项目,体会到了EF的强大性. 它是微软封装好一种ADO.NET数据实体模型,将数据库结构以ORM模式映射到应 ...

  9. vmware 虚拟机通信拿不到 inet addr 的解决办法

    我在虚拟机上安装完红帽之后,使用ifconfig命令来看网卡的IP,但是,输入命令之后,eht0里面只有 inet6 addr 而没有 inet addr,不多说,上图. 解决办法如下:打开 虚拟机设 ...

  10. margin-top失效的解决方法

    异常处理汇总-前端系列 http://www.cnblogs.com/dunitian/p/4523015.html 我的是属于这种情况 按照网上的说法,我就是这个现象了 两个层box1和box2,b ...