1、使用API函数mciSendString构成的媒体播放类使用API函数mciSendString构成的媒体播放类使用API函数mciSendString构成的媒体播放类.txt我自横刀向天笑,笑完我就去睡觉。 你的手机比话费还便宜。路漫漫其修远兮,不如我们打的吧。/* * C#没有提供播放MP3等音频文件的类, * 要编写播放MP3等音频文件程序, * 必须使用第三方控件或类。 * 本文使用API函数mciSendString, * 编写一个播放MP3等音频文件的类。 */using System;using System.Collections.Generic;using System.Co
2、mponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Runtime.InteropServices;namespace 使用API函数mciSendString构成的媒体播放类 public partial class Form1 : Form string path; public Form1() InitializeComponent(); clsMCI mci = null; priva
3、te void button1_Click(object sender, EventArgs e) mci = new clsMCI(); mci.FileName =path; this.progressBar1.Maximum = mci.Duration; mci.play(); this.timer1.Enabled = true; private void button2_Click(object sender, EventArgs e) if (mci = null) else this.timer1.Enabled = false; mci.StopT(); private vo
4、id button3_Click(object sender, EventArgs e) OpenFileDialog op = new OpenFileDialog(); if (op.ShowDialog() = DialogResult.OK) path = op.FileName; private void Form1_Load(object sender, EventArgs e) private void timer1_Tick(object sender, EventArgs e) this.progressBar1.Value = mci.CurrentPosition; if
5、 (mci.CurrentPosition=mci.Duration) this.timer1.Enabled = false; public class clsMCI public clsMCI() / / TODO: 在此处添加构造函数逻辑 / /定义API函数使用的字符串变量 MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260) private string Name = ; MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128) private string durLength = ; M
6、arshalAs(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 Sta
7、te 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.Ge
8、tShortPathName(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 =
9、 APIClass.mciSendString(Name, TemStr, TemStr.Length, 0); ilong = APIClass.mciSendString(set media time format milliseconds, TemStr, TemStr.Length, 0); mc.state = State.mStop; catch MessageBox.Show(出错错误!); / / 播放 / public void play() TemStr = ; TemStr = TemStr.PadLeft(127, Convert.ToChar( ); APIClass
10、.mciSendString(play media, TemStr, TemStr.Length, 0); mc.state = State.mPlaying; / / 停止 / public void StopT() 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 =
11、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 = n
12、ame.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; durLength=durLe
13、ngth.Substring(0,durLength.IndexOf(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); durLength = durLength
14、.Substring(0, durLength.IndexOf(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 );
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1