| 
 
| 
| 
| | « | October 2025 | » |  | 日 | 一 | 二 | 三 | 四 | 五 | 六 |  |  |  |  | 1 | 2 | 3 | 4 |  5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |  | |  | 
 |  公告
 |  
| 暂无公告... |  
 
 
 
 
 
 
| Blog信息 |  
| blog名称:VFP及Sql Server拙笔日志总数:46
 评论数量:107
 留言数量:0
 访问次数:436470
 建立时间:2005年5月12日
 |   
 
 |  | 
 
|  [编程及数据库]VFP读取MP3信息资料 文章收藏,  网上资源,  事件记录,  软件技术,  电脑与网络
 老瓷 发表于 2008/1/19 2:01:41  |  
| 
| *---------------------------------------------------------------------* 程序: 读取 MP3 信息资料* 设计: 红雨* 调用示例*---------------------------------------------------------------------ClearLocal lcMP3File, laMP3Info(5)Store [] To laMP3InfolcMP3File = [Z:\MPSong\阿杜\离别.mp3]If GetMP3Info( lcMP3File, @laMP3Info )    ? [文件: ] + lcMP3File    ? [歌曲: ] + laMP3Info(1)    ? [歌手: ] + laMP3Info(2)    ? [歌集: ] + laMP3Info(3)    ? [年份: ] + laMP3Info(4)    ? [备注: ] + laMP3Info(5)Else    = MessageBox( [该文件没有包含媒体信息!] )Endif 
Local lcRetuStr, lnMicLengthlcRetuStr = SendMciString( [Open ]+lcMP3File+[ Alias MICTEMP] )If Left(lcRetuStr,5)=[错误:]    = MessageBox(lcRetuStr, 0+16+0, [打开媒体文件错误])Else    = SendMciString( [Set MICTEMP Time Format MilliSeconds])    && 设置时间格式    lnMicLength = Val(SendMciString( [Status MICTEMP Length] )) && 取媒体长度    = SendMciString( [Close MICTEMP] )    ? [时间: ] + allt(str(lnMicLength))+[ 毫秒]EndifReturn 
*---------------------------------------------------------------------* 程序: 读取 MP3 信息资料* 设计: 红雨*---------------------------------------------------------------------Function GetMP3Info ( tcMP3File, taMP3Info )    External Array taMP3Info    tcMP3File = iif(Type([tcMP3File])=[C], tcMP3File, [])    If Type([aLen(taMP3Info,1)])#[N]        Dime taMP3Info(5)    Else        If aLen(taMP3Info,1)#5            Dime taMP3Info(5)        Endif    Endif    If File(tcMP3File)        Local lcMP3Str, lnFHand        lnFHand = FOPEN( tcMP3File )        If lnFHand > 0            = FSEEK( lnFHand, -128, 2)            lcMP3Str = FREAD( lnFHand, 127 )            = FCLOSE( lnFHand )            If uppe(subs(lcMP3Str,1,3)) = [TAG]                lcMP3Str = subs(lcMP3Str,4)                taMP3Info(1) = allt(subs(lcMP3Str, 1,30))+chr(0)                taMP3Info(1) = allt( left(taMP3Info(1),at(chr(0),taMP3Info(1))-1) )                taMP3Info(2) = allt(subs(lcMP3Str,31,30))+chr(0)                taMP3Info(2) = allt( left(taMP3Info(2),at(chr(0),taMP3Info(2))-1) )                taMP3Info(3) = allt(subs(lcMP3Str,61,30))+chr(0)                taMP3Info(3) = allt( left(taMP3Info(3),at(chr(0),taMP3Info(3))-1) )                taMP3Info(4) = allt(subs(lcMP3Str,91, 4))+chr(0)                taMP3Info(4) = allt( left(taMP3Info(4),at(chr(0),taMP3Info(4))-1) )                taMP3Info(5) = allt(subs(lcMP3Str,95,30))+chr(0)                taMP3Info(5) = allt( left(taMP3Info(5),at(chr(0),taMP3Info(5))-1) )                Return .T.            Else                Return .F.            Endif        Else            Return .F.        Endif    Else        Return .F.    EndifEndfunc 
Function SendMciString( tcMCIcmd )    Declare integer mciSendString in WINMM String, String, integer,integer    Declare integer mciGetErrorString in WINMM integer, String, integer    lcRetStr = Space( 80)    lcErrStr = Space(256)    lnRetVal = mciSendString( tcMCIcmd, @lcRetStr, Len(lcRetStr), 0 )    If lnRetVal=0        Retu Trim(Strtran(lcRetStr,chr(0),""))    Else        = mciGetErrorString(lnRetVal,@lcErrStr,Len(lcErrStr))        Retu [错误: ]+Trim(Chrtran(lcErrStr,chr(0),""))    EndifEndfunc |  
 |  
 
 
 
 |