以下为我写的Mp3操作类源代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.InteropServices;

/************************************************************************************************************************************
* * 文件名 :
* * 声明 :
* * 创建者 : 黄聪
* * 创建日期 : 2009.10.8
* * 修改者 : 黄聪
* * 最新修改日期 : 2009.10.8
************************************************************************************************************************************/
namespace Tool
{
/********************************************************************************************************************************
* * 类名 :
* * 声明 :
* * 创建者 : 黄聪
* * 创建日期 : 2009.7.15
* * 修改者 : 黄聪
* * 最新修改日期 : 2009.7.15
********************************************************************************************************************************/
public class Mp3Player
{
#region - 属性 -
[DllImport("winmm.dll")]
static extern Int32 mciSendString(String command,
StringBuilder buffer, Int32 bufferSize, IntPtr hwndCallback);

/// <summary>
/// 临时音乐文件存放处
/// </summary>
private string m_musicPath = "";

/// <summary>
/// 父窗体句柄
/// </summary>
private IntPtr m_Handle;
#endregion

#region - 构造函数 -
/// <summary>
/// 创建Mp3播放类
/// </summary>
/// <param name="music">嵌入的音乐文件</param>
/// <param name="path">临时音乐文件保存路径</param>
/// <param name="Handle">父窗体句柄</param>
public Mp3Player(Byte[] music, string path, IntPtr Handle)
{
try
{
m_Handle = Handle;
m_musicPath = Path.Combine(path, "temp.mp3");
FileStream fs = new FileStream(m_musicPath, FileMode.Create);
fs.Write(music, 0, music.Length);
fs.Close();
}
catch (Exception)
{

}
}

/// <summary>
/// 创建Mp3播放类
/// </summary>
/// <param name="musicPath">要播放的mp3文件路径</param>
/// <param name="Handle">父窗体句柄</param>
public Mp3Player(string musicPath, IntPtr Handle)
{
m_musicPath = musicPath;
m_Handle = Handle;
}

public Mp3Player(Byte[] music, IntPtr Handle):
this(music, @"C:\Windows\", Handle)
{

}

#endregion

#region - 播放音乐 -
public void Open(string path)
{
if (path != "")
{
try
{
mciSendString("open " + path + " alias media", null, 0, m_Handle);
mciSendString("play media", null, 0, m_Handle);
}
catch (Exception)
{

}
}
}

public void Open()
{
Open(m_musicPath);
}
#endregion

#region - 停止音乐播放 -
void CloseMedia()
{
try
{
mciSendString("close all", null, 0, m_Handle);
}
catch (Exception)
{
}
}
#endregion
}
}

1.将MP3文件导入到VS中,并且设置为嵌入的资源:

MP3文件

2.导入到资源中,C#中视MP3为文件类型,以Byte[]形式存储:

3.将该MP3文件设置为嵌入的资源:

4.最后创建一个新的窗体工程,在Load事件中调用Mp3类的方法即可播放音乐:

private void FormMain_Load(object sender, EventArgs e)
{
//加载音乐
  Mp3Player mp3 = new Mp3Player(Properties.Resources.music, Handle);

  //音乐开始播放

   mp3.Open();
}

黄聪:C# MP3操作类,能播放指定的mp3文件,或播放嵌入的资源中的Mp3文件相关推荐

  1. 黄聪:C#操作Word表格的常见操作

    几种常见C#操作Word表格操作有哪些呢?让我们来看看具体的实例演示: bool saveChange = false; //C#操作Word表格操作 object missing = System. ...

  2. VOC格式数据集操作类构建-2.统计数据集各类别标签数目和剪裁图像中标注框并保存图片

    总目标:建立VOC格式数据集类以及操作内置函数 github项目地址(附有使用说明书): https://github.com/A-mockingbird/VOCtype-datasetOperati ...

  3. java中IO写文件工具类

    以下是一些依据经常使用java类进行组装的对文件进行操作的类,平时,我更喜欢使用Jodd.io中提供的一些对文件的操作类,里面的方法写的简单易懂. 当中jodd中提供的JavaUtil类中提供的方法足 ...

  4. Java笔记整理六(File类,递归,字节流IO,字符流IO,流中的异常处理,属性集Properties,缓冲流,转换流,序列化,打印流)

    1.File类 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 文件和目录路径名的抽象表示 java把文件和文件夹封装位为一个File类,我们可 ...

  5. 黄聪:C#编写的Word操作类,有换页,添加表格,文本功能

    最近要帮老师做个工资管理系统,需要自动生成Word. 就上网找了个Word操作类,再做了点修改,下面公布一下自己的代码: using System; using System.Collections. ...

  6. 黄聪:原生js的音频播放器,兼容pc端和移动端(原创)

    更新时间:2018/9/3 下午1:32:54 更新说明:添加音乐的loop设置和ended事件监听 loop为ture的时候不执行ended事件 1 2 3 4 5 6 7 8 9 10 11 12 ...

  7. 黄聪:第2章 并发操作的一致性问题 (2)

    2.2 SQL Server 2000+ADO.NET实现并发控制 2.2.1 并发一致性问题 常见并发并发一致性问题包括:丢失的修改.不可重复读.读脏数据.幻影读(幻影读在一些资料中往往与不可重复读 ...

  8. 黄聪:如何使用CodeSmith批量生成代码(转:http://www.cnblogs.com/huangcong/archive/2010/06/14/1758201.html)...

    先看看CodeSmith的工作原理: 简单的说:CodeSmith首先会去数据库获取数据库的结构,如各个表的名称,表的字段,表间的关系等等,之后再根据用户自定义好的模板文件,用数据库结构中的关键字替代 ...

  9. 黄聪:如何使用CodeSmith批量生成代码(原创系列教程)

    在上一篇我们已经用PowerDesigner创建好了需要的测试数据库,下面就可以开始用它完成批量代码生成的工作啦. 下面我会一步步的解释如何用CodeSmith实现预期的结果的,事先声明一下,在此只做 ...

最新文章

  1. 学生选课管理系统c语言程序报告,c语言课程设计学生选课管理系统实验报告.doc...
  2. map,filter,reduce函数总结
  3. 海思 3559 SVP NNIE demo解读
  4. 在Linux中使用飞信发送手机短信
  5. python-比较两份word文档
  6. 怎么在服务器上接无线路由器,交换机怎么用 交换机接无线路由器设置教程【详解】...
  7. Java图形用户界面(容器)
  8. 李兴平中国最牛的个人站长
  9. Flutter 解决软键盘弹出背景图片变形
  10. 优普丰十年敏捷推广的心得总结(上篇)之 “从零到一的信心加持”
  11. 加快数字化发展 建设数字中国
  12. java——接口作为方法的参数和返回值
  13. Java服务器,联机小游戏
  14. 三星980处理器和骁龙855_骁龙855、麒麟980、Exynos9820谁最强?看完秒懂
  15. pytorch Con2d详解
  16. 创新TX230音箱线控电位器维修记
  17. boost graph_探索Boost Graph库
  18. 中国全国地区MYSQL 地区SQL数据表(省,市,区,县)
  19. vue + moment.js 自己写日历
  20. 图片模块右上角添加hot、news小图标

热门文章

  1. python将控制台输出保存至文件
  2. SQLServer之创建分布式事务
  3. Maven本地缓存清理小工具
  4. XDU 翼讯账号算法
  5. AIX 操作系统日常维护须知
  6. Spring 面试问题
  7. (转)java.lang.OutOfMemoryError: Java heap space错误及处理办法(收集整理、转)
  8. AlphaGo的原理
  9. Android -- Messenger与Service
  10. 【MySQL】MySQL5.6新特性之Index Condition Pushdown