代码如下:
1 using System; 2 using System.Runtime.InteropServices; 3 using System.Text; 4 using System.IO ; 5 using System.Windows.Forms; 6 namespace Windowsapplication7 7 { 8 /// <summary> 9 /// clsMci 的摘要说明。 10 /// </summary> 11 public class clsMCI 12 { 13 public clsMCI() 14 { 15 // 16 // TODO: 在此处添加构造函数逻辑 17 // 18 } 19 20 //定义API函数使用的字符串变量 21 [MarshalAs(UnmanagedType.ByValTStr,SizeConst=260)] 22 PRivate string Name = "" ; 23 [MarshalAs(UnmanagedType.ByValTStr,SizeConst=128)] 24 private string durLength = "" ; 25 [MarshalAs(UnmanagedType.LPTStr,SizeConst=128)] 26 private string TemStr =""; 27 int ilong; 28 //定义播放状态枚举变量 29 public enum State 30 { 31 mPlaying = 1, 32 mPuase = 2, 33 mStop = 3 34 }; 35 //结构变量 36 public struct structMCI 37 { 38 public bool bMut; 39 public int iDur; 40 public int ipos; 41 public int iVol; 42 public int iBal; 43 public string iName; 44 public State state; 45 }; 46 47 public structMCI mc =new structMCI() ; 48 49 //取得播放文件属性 50 public string FileName 51 { 52 get 53 { 54 return mc.iName; 55 } 56 set 57 { 58 //ASCIIEncoding asc = new ASCIIEncoding(); 59 try 60 { 61 TemStr =""; 62 TemStr = TemStr.PadLeft(127,Convert.ToChar(" ")); 63 Name = Name.PadLeft(260,Convert.ToChar(" ")) ; 64 mc.iName = value; 65 ilong = APIClass.GetShortPathName(mc.iName,Name, Name.Length); 66 Name = GetCurrPath(Name); 67 //Name = "open " + Convert.ToChar(34) + Name + Convert.ToChar(34) + " alias media"; 68 Name = "open " + Convert.ToChar(34) + Name + Convert.ToChar(34) + " alias media"; 69 ilong = APIClass.mciSendString("close all", TemStr, TemStr.Length , 0); 70 ilong = APIClass.mciSendString( Name, TemStr, TemStr.Length, 0); 71 ilong = APIClass.mciSendString("set media time format milliseconds", TemStr, TemStr.Length , 0); 72 mc.state = State.mStop; 73 } 74 catch 75 { 76 } 77 } 78 } 79 //播放 http://sosoft.VEVb.com/ 80 public void play() 81 { 82 TemStr = ""; 83 TemStr = TemStr.PadLeft(127,Convert.ToChar(" ")); 84 APIClass.mciSendString("play media", TemStr, TemStr.Length , 0); 85 mc.state = State.mPlaying ; 86 } 87 //停止 88 public void StopT() 89 { 90 TemStr = ""; 91 TemStr = TemStr.PadLeft(128,Convert.ToChar(" ")); 92 ilong = APIClass.mciSendString("close media", TemStr, 128, 0); 93 ilong = APIClass.mciSendString("close all", TemStr, 128, 0); 94 mc.state = State.mStop ; 95 } 96 97 public void Puase() 98 { 99 TemStr = "";100 TemStr = TemStr.PadLeft(128,Convert.ToChar(" "));101 ilong = APIClass.mciSendString("pause media", TemStr, TemStr.Length, 0);102 mc.state = State.mPuase ; 103 }104 private string GetCurrPath(string name)105 {106 if(name.Length <1) return ""; 107 name = name.Trim();108 name = name.Substring(0,name.Length-1);109 return name;110 }111 //总时间112 public int Duration113 {114 get115 {116 durLength = "";117 durLength = durLength.PadLeft(128,Convert.ToChar(" ")) ;118 APIClass.mciSendString("status media length", durLength, durLength.Length, 0);119 durLength = durLength.Trim();120 if(durLength == "") return 0;121 return (int)(Convert.ToDouble(durLength) / 1000f); 122 }123 }124 125 //当前时间126 public int CurrentPosition127 {128 get129 {130 durLength = "";131 durLength = durLength.PadLeft(128,Convert.ToChar(" ")) ;132 APIClass.mciSendString("status media position", durLength, durLength.Length, 0);133 mc.iPos = (int)(Convert.ToDouble(durLength) / 1000f);134 return mc.iPos;135 }136 }137 }138 139 public class APIClass140 {141 [DllImport("kernel32.dll", CharSet = CharSet.Auto)]142 public static extern int GetShortPathName (143 string lpszLongPath,144 string shortFile,145 int cchBuffer146 );147 148 [DllImport("winmm.dll", EntryPoint="mciSendString", CharSet = CharSet.Auto)]149 public static extern int mciSendString (150 string lpstrCommand,151 string lpstrReturnString,152 int uReturnLength,153 int hwndCallback154 );155 }156 }157 158 159 160 161 162 clsMCI cm = new clsMCI();163 cm.FileName = "keleyi.mp3";//文件名164 cm.play();
新闻热点
疑难解答