C#下播放 我要写一个单词软件需要调用大量的mp3文件.按字母表文件夹分类在26个文件夹下,共有上万个音频请问VS.net下如果实现播放mp3文件,要求支持异步播放和中断。有什么好的解决方案 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //请问我想控制播放中音屏的音量(单独降低或提高它的音量,但不能影响其它控件在同时播放其它音屏的音量大小),应该如何写? using System; using System.Runtime.InteropServices; using System.Text; using System.IO ; namespace LL { /// <summary> /// clsMci 的摘要说明。 /// </summary> public class clsMCI { public clsMCI() { } //定义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 { } } } //播放 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 ); } } 多文件上传fileupload 如何直接打印本地的HTML文件 用Winform实现jpg,gif图片的播放,以及实现ppt的播放功能? 新手求教!关于在新建类中使用先前已经创建了的类的问题 关于 FTP 的服务器端设定和在。NET里面怎么控制的问题; 请问一个这样"public abstract class Control"的类怎样可以继承? 急!C#ListView的一列中居然有最大输入字数? 如何改变它。。 不要笑話我,我要C#學習的好書 c#支持stl么 我想这样!再dbgrid中某项设置成超连接 写了个程序,怎样才能开机运行呢? 如何窗体间传递变量的值?
using System.Runtime.InteropServices;
using System.Text;
using System.IO ; namespace LL
{
/// <summary>
/// clsMci 的摘要说明。
/// </summary>
public class clsMCI
{
public clsMCI()
{
} //定义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
{
}
}
}
//播放
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
);
}
}