声音

1、调用系统的声音来提示用户

System.Media.SystemSounds.XXX.Play();

2、播放波形文件WAV格式

           if (this.openFileDialog1.ShowDialog() == DialogResult.OK)

            {

                SoundPlayer player = new SoundPlayer();

                player.SoundLocation = this.openFileDialog1.FileName;

                //player.LoadAsync();

                player.Load();

                player.Play();

            }

3、播放MP3文件 比较复杂啊

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Runtime.InteropServices;

using System.Text;

using System.Windows.Forms;



namespace MP3播放器

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }



        private void Form1_Load(object sender, EventArgs e)

        {



        }

        clsMCI cm = new clsMCI();

        string filename = "";

        private void btnPlay_Click(object sender, EventArgs e)

        {

            if (this.openFileDialog1.ShowDialog() == DialogResult.OK)

            {

                cm.FileName = this.openFileDialog1.FileName;

                filename = cm.FileName;

                cm.Play();

            }

        }



        private void btnStop_Click(object sender, EventArgs e)

        {

            cm.Stop();

        }



        private void button1_Click(object sender, EventArgs e)

        {

            cm.FileName = filename;

            cm.Play();

        }

    }

    public class clsMCI

    {

        public clsMCI()

        {

            //

            // TODO: 在此处添加构造函数逻辑

            //

        }



        //定义API函数使用的字符串变量 

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]

        private string Name = "";

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]

        private string durLength = "";

        [MarshalAs(UnmanagedType.LPTStr, SizeConst = 128)]

        private string TemStr = "";

        int ilong;

        //定义播放状态枚举变量

        public enum State

        {

            mPlaying = 1,

            mPuase = 2,

            mStop = 3

        };

        //结构变量

        public struct structMCI

        {

            public bool bMut;

            public int iDur;

            public int iPos;

            public int iVol;

            public int iBal;

            public string iName;

            public State state;

        };

        public structMCI mc = new structMCI();

        //取得播放文件属性

        public string FileName

        {

            get

            {

                return mc.iName;

            }

            set

            {

                //ASCIIEncoding asc = new ASCIIEncoding(); 

                try

                {

                    TemStr = "";

                    TemStr = TemStr.PadLeft(127, Convert.ToChar(" "));

                    Name = Name.PadLeft(260, Convert.ToChar(" "));

                    mc.iName = value;

                    ilong = APIClass.GetShortPathName(mc.iName, Name, Name.Length);

                    Name = GetCurrPath(Name);

                    //Name = "open " + Convert.ToChar(34) + Name + Convert.ToChar(34) + " alias media";

                    Name = "open " + Convert.ToChar(34) + Name + Convert.ToChar(34) + " alias media";

                    ilong = APIClass.mciSendString("close all", TemStr, TemStr.Length, 0);

                    ilong = APIClass.mciSendString(Name, TemStr, TemStr.Length, 0);

                    ilong = APIClass.mciSendString("set media time format milliseconds", TemStr, TemStr.Length, 0);

                    mc.state = State.mStop;

                }

                catch

                {

                }

            }

        }

        //播放

        public void Play()

        {

            TemStr = "";

            TemStr = TemStr.PadLeft(127, Convert.ToChar(" "));

            APIClass.mciSendString("play media", TemStr, TemStr.Length, 0);

            mc.state = State.mPlaying;

        }

        //停止

        public void Stop()

        {

            TemStr = "";

            TemStr = TemStr.PadLeft(128, Convert.ToChar(" "));

            ilong = APIClass.mciSendString("close media", TemStr, 128, 0);

            ilong = APIClass.mciSendString("close all", TemStr, 128, 0);

            mc.state = State.mStop;

        }

        public void Puase()

        {

            TemStr = "";

            TemStr = TemStr.PadLeft(128, Convert.ToChar(" "));

            ilong = APIClass.mciSendString("pause media", TemStr, TemStr.Length, 0);

            mc.state = State.mPuase;

        }

        private string GetCurrPath(string name)

        {

            if (name.Length < 1) return "";

            name = name.Trim();

            name = name.Substring(0, name.Length - 1);

            return name;

        }

        //总时间

        public int Duration

        {

            get

            {

                durLength = "";

                durLength = durLength.PadLeft(128, Convert.ToChar(" "));

                APIClass.mciSendString("status media length", durLength, durLength.Length, 0);

                durLength = durLength.Trim();

                if (durLength == "") return 0;

                return (int)(Convert.ToDouble(durLength) / 1000f);

            }

        }

        //当前时间

        public int CurrentPosition

        {

            get

            {

                durLength = "";

                durLength = durLength.PadLeft(128, Convert.ToChar(" "));

                APIClass.mciSendString("status media position", durLength, durLength.Length, 0);

                mc.iPos = (int)(Convert.ToDouble(durLength) / 1000f);

                return mc.iPos;

            }

        }

    }

    public class APIClass

    {

        [DllImport("kernel32.dll", CharSet = CharSet.Auto)]

        public static extern int GetShortPathName(

            string lpszLongPath,

            string shortFile,

            int cchBuffer

        );

        [DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]

        public static extern int mciSendString(

            string lpstrCommand,

            string lpstrReturnString,

            int uReturnLength,

            int hwndCallback

        );

    }

}
View Code

 

 

你可能感兴趣的:(声音)