关闭

转 .net上播放MP3

474人阅读 评论(0) 收藏 举报
用的是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了 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:35319次
    • 积分:595
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:13篇
    • 译文:0篇
    • 评论:5条
    文章分类
    最新评论