天马行空
——热爱你所拥有的
播放mp3的类
来自:
dengchong@
天马行空
日期:
2007-7-18 20:22:34
全文阅读:
loading...
分类:
asp asp.net sql
【摘要】
播放mp3的类
【全文】
一、使用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
);
}
}
【全文结束】
发表您的评论:
署名:
记住我
主页:
内容:
Powered By
X2Blog.cn
All Rights Reservered 2005-2006