《最新使用API函数mciSendString构成的媒体播放类》由会员分享,可在线阅读,更多相关《最新使用API函数mciSendString构成的媒体播放类(16页珍藏版)》请在金锄头文库上搜索。
1、最新使用API函数mciSendString构成的媒体播放类使用API函数mciSendString构成的媒体播放类.txt我自横刀向天笑,笑完我就去睡觉。 你的 比话费还廉价。路漫漫其修远兮,不如我们打的吧。/* * C#没有提供播放MP3等音频文件的类, * 要编写播放MP3等音频文件程序, * 必须使用第三方控件或类。 * 本文使用API函数mciSendString, * 编写一个播放MP3等音频文件的类。 */using System;using System.Collections.Generic;using System.ComponentModel;using System.D
2、ata;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; private void button1_Click(objec
3、t 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 void button3_Click(object sen
4、der, 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 (mci.CurrentPosition=mci.D
5、uration) 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 = ; MarshalAs(UnmanagedType.LPTS
6、tr, 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 structMC
7、I 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, Na
8、me, 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(Nam
9、e, 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.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 = State.mStop