为什么mciSendString不能播放中文文件名的MP3啊?
为什么用mcisendstring播放MP3时遇到中文的文件名时就不能播放啦而且也不能得到播放进度、当前播放状态等。?英文的倒是可以的。
Private Sub play_Click()
Dim a As Long
a = mciSendString("close all", vbNull, 0, 0)
Debug.Print "1 " & GetMCIErrorString(a)
Debug.Print "2 " & ShortPathName(txtName.Text)
a = mciSendString("OPEN " & ShortPathName(txtName.Text) & " alias NOWPLAY type mpegvideo", 0&, 0, 0)
Debug.Print "3 " & GetMCIErrorString(a)
a = mciSendString("Play NOWPLAY", 0&, 0, 0) '这一句出现“指定的设备未打开,或不被 MCI 所识别。 ”的错误
Debug.Print "4 " & GetMCIErrorString(a)
txtLen.Text = GetMusicLen & " " & GetMusicTotalTime
Timer1.Enabled = True
'Probar.Min = 1
'Probar.Max = GetMusicLen
End Sub
这时的文件名为:F:\Music\Beyond\光辉岁月\光辉岁月.mp3(8。3:F:\Music\Beyond\光辉岁月\光辉岁月.mp3)
而如果我用:F:\Music\BackStreet Boys\BackStreet Boys\Anywhere For You.mp3(8。3:F:\Music\BACKST~1\BACKST~1\ANYWHE~1.MP3)的文件名就可以正常播放。
F:\Music\柏林之声\02_Live In America.mp3(8。3:F:\Music\柏林之声\02_LIV~1.MP3)这样的文件名也不能播放。
F:\Music\Beyond\PARADISE\PARADISE[演奏版].mp3(8。3:F:\Music\Beyond\PARADISE\PARADI~1.MP3)这个文件也能播放。
正常时的四句debug:
1 指定的命令已被执行。
2 F:\Music\Beyond\PARADISE\PARADI~1.MP3
3 指定的命令已被执行。
4 指定的命令已被执行。
不正常时的四句debug:
1 指定的命令已被执行。
2 F:\Music\Beyond\光辉岁月\光辉岁月.mp3
3 指定的命令已被执行。
4 指定的设备未打开,或不被 MCI 所识别。
我列了怎么多文件名无非是想说,英文的文件名就可以播放(包括路径),包含中文的就不可以,但奇怪的是最后一个文件名中包含中文也能播放,各位有什么好的方法解决这个问题吗?
还有一个情况,就是不用alias参数,而直接用文件名的话倒是可以播放,但还是不能得到播放进度、当前播放状态等。