C# 中如何使用API函数来获取音频文件的时间长度?

我想取常用的音频文件的时间,使用API函数来做.我自己写的代码如下:privateintGetFileLen(stringfilename){stringlenth=""... 我想取常用的音频文件的时间,使用API函数来做.我自己写的代码如下:
private int GetFileLen(string filename)
{
string lenth="";
int ValBack;
mciSendString("open " +filename + " alias song", "", 0, 0);
ValBack = mciSendString("set"+"song "+"time format milliseconds", "", 0, 0);
ValBack = mciSendString("status"+"song length", lenth,lenth.Length, 0);
MessageBox.Show(lenth);
lenth = lenth.Trim();
MessageBox.Show(lenth);
if (lenth == "")
{
return 0;
}
else
{

return (int)(Convert.ToDouble(lenth) / 1000f);
}
}

用messagebox返回的lenth值为"",也就是说用来取时间的字符串没有取到时间,请问该怎么修改?
展开
 我来答
413917996
推荐于2016-04-05 · TA获得超过127个赞
知道答主
回答量:36
采纳率:0%
帮助的人:56.4万
展开全部
你这个lenth变量不可能取得到值啊。
ValBack = mciSendString("status"+"song length", lenth,lenth.Length, 0);
这一句你把lenth一个为""的值当作参数传给mciSendString,这是什么意思呢?
整个方法没有给lenth赋值的量,你再去取得它,它依然还是"",当然取不到了。
这个API函数不太常用,我帮你找了个详细的例子,你可以临摹一下。好好研究一下吧。

http://www.cnblogs.com/302soft/articles/627869.html
风音781
推荐于2018-05-15 · TA获得超过217个赞
知道小有建树答主
回答量:170
采纳率:83%
帮助的人:69.6万
展开全部
"获取媒体的长度 00:00
Public Function GetMusicLengthString(FileName As String) As String
Dim RefStr As String * 80
mciSendString ""status "" & CreateObject(""Scripting.FileSystemObject"").GetFile(FileName).shortpath & "" length"", RefStr, 80, 0
GetMusicLengthString = CStr(Format(Int(Val(RefStr) \ 1000 \ 60), ""00"") & "":"" & Format(Val(RefStr) \ 1000 Mod 60, ""00."") & Val(RefStr) \ 100 Mod 10)
End Function"
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式