809
社区成员




Option Explicit
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringW" ( _
ByVal lpstrCommand As Long, _
ByVal lpstrReturnString As Long, _
ByVal uReturnLength As Long, _
ByVal hwndCallback As Long) As Long
Private strFile As String
Private mlFlag As Long
Private Sub PlayMp3()
Dim strOpenCMD As String
Dim strPlayCMD As String
mlFlag = vbTrue
strOpenCMD = "open " & strFile & " Alias MyMp3"
strPlayCMD = "play MyMp3 from 15000 to 120000"
' 从15秒处开始播放到120秒处(命令串中的时间单位是ms)
' 不过发现很不靠谱:128Kbps固定码率的那首歌基本正确;另一首256Kbps变比码率的“差之千里”
Call mciSendString(StrPtr(strOpenCMD), 0&, 0&, 0&)
Call mciSendString(StrPtr(strPlayCMD), 0&, 0&, 0&)
End Sub
Private Sub StopMp3()
If (Not mlFlag) Then Exit Sub
Call mciSendString(StrPtr("close MyMp3"), 0&, 0&, 0&)
mlFlag = vbFalse
End Sub
Private Sub Command1_Click()
Call PlayMp3
End Sub
Private Sub Command2_Click()
Call StopMp3
End Sub
Private Sub Form_Load()
mlFlag = vbFalse
'strFile = "F:\Mp3\爱江山更爱美人.mp3" ' 256Kbps(VBR) 05:19
strFile = "F:\Mp3\半生缘.mp3" ' 128Kbps 02:13
End Sub
Private Sub Form_Unload(Cancel As Integer)
If (mlFlag) Then Call StopMp3
End Sub