- 具体源码如下:<转载>
-
- 一、使用API函数mciSendString构成的媒体播放类。
-
- 程序代码
-
- using System;
- using System.Runtime.InteropServices;
- using System.Text;
- using System.IO ;
- namespace clsMCIPlay
- {
- /// <SUMMARY>
- /// clsMci 的摘要说明。
- /// </SUMMARY>
- 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
- {
- 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 ;
- }
-
- 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
- );
- }
- }
posted @
2007-07-19 01:07
玉米疯收
阅读(
751)
评论()
编辑
收藏
举报