调用API函数播放嵌入的MP3文件

    技术2024-10-09  56

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

    namespace Tool{    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();}

    最新回复(0)