转 .net上播放MP3

用的是VS那么直接调用Media player好了,可惜自己用的是#Develop做为开发环境。居然不支持com组件的引用。我倒~
于是参照MS API写了下面这个简单的播放类

 

/*
 * Created by SharpDevelop.
 * User: root
 * Date: 2006-8-16
 * Time: 15:44
 *
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */

using System;
using System.Runtime.InteropServices;


namespace Com.Music
{
 /// <summary>
 /// 音乐播放类
 /// 参考:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_multimedia_command_strings.asp
 /// </summary>
 public class MusicPlayer
 {
  
  
  
  [DllImport("winmm.dll")]
  private  static extern long mciSendString(string strCommand,
  string strReturn, int iReturnLength, IntPtr hwndCallback);
  
  
  public MusicPlayer()
  {
  }
  //播放器状态
  /*
   *
   * All devices can return the
   * "not ready", "paused", "playing", and "stopped" values.
   * Some devices can return the additional
   * "open", "parked", "recording", and "seeking" values
   *   
   */
  public string Status
  {
  get{
   string sCommand = "status MediaFile mode";
   string  ret="";
   mciSendString(sCommand, ret, 10, IntPtr.Zero);
   return ret.Trim();
   }
  }
  
  private void Open(string sFileName)
  { 
   string sCommand="open /"" + sFileName + "/" type mpegvideo alias MediaFile";  
   //   MediaFile是选择播放文件类型
   string  ret=null;
   mciSendString(sCommand, ret, 0, IntPtr.Zero);           
        }
  //播放音乐
  public void Play(string filename)   
        {
   Open(filename);   
   string sCommand = "play MediaFile";
   string  ret=null;
         mciSendString(sCommand,ret, 0, IntPtr.Zero);
        }
  //停止播放音乐
  public void Stop()
  {  
   string sCommand = "stop MediaFile";
   string  ret=null;
   mciSendString(sCommand, ret, 0, IntPtr.Zero);
  }
  
  public void Pause()
  {  
   string sCommand = "pause MediaFile";
   string  ret=null;
   mciSendString(sCommand, ret, 0, IntPtr.Zero);
  }
  
 }
}

 

播放的话只要一句就搞定
MusicPlayer mp = new MusicPlayer();
void Button1Click(object sender, System.EventArgs e)
  {
       mp.Play("H:/mp3/十七岁的雨季.mp3");   
  }


另外拿这个测试拉下MONO 1.6 beta 还不错开来MONO也开始支持调用OS本地API了 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值