利用API函數[mciSendString]可以輕松實現MP
音樂文件的播放
下面這段程序實現了MP
播放的大部分常規操作
對其稍加修改
做一個
KB大小的MP
播放器輕而易舉
啟動VB程序
在窗體上放置
個命令按鈕
三個標簽
一個公用對話框
一個進度條
一個狀態欄和一個計時器
窗本的布置請參考附圖
按鈕
Open MP
File
是用來打開對話框選擇MP
文件
其他
個按鈕分別為Play(播放)
Pause(暫停)
Stopplay(停止播放)
Back(向後跳躍)
Prew(向前跳躍)
Label
用來表示歌曲當前時間
label
放在時度條的最左邊
Caption屬性為
lable
放在時度條的右邊
用來表示歌曲總長
下面就可以編寫代碼了
首先在窗體的
通用聲明
部分聲明函數
Private Declare Function mciSendString Lib
winmm
dll
Alias
mciSendStringA
(Byval lpstrCommand As String
ByVal lpstrRetumString As String
ByVal uReturnLength As long
ByVal hwndCallback as long) As long
Dim mfn As String
下面就是各個對象的代碼了
Private Sub Form_load()
mfn=
play
Enabled=False
pause
Enabled=False
Stopplay
Enabled=False
back
Enabled=False
prew
Enabled=False
Timer
Enabled=False
Timer
Interval=
End Sub
Private Sub open_Click()
On Error Goto err
With CommonDialog
CancelError=True
Filter=
音樂文件|*
mp
;*
wav;*
mid
Flags=cdlOFNNoChangeDir And cdlOFNPathMustExist
Action=
stopplay_Click
停止按鈕同時可以設備初始化
mfn=
FileName
這個程序中文件名一定不能帶空格
Form
Caption=
FileName
play
Enabled=True
End With
play_Click
Exit Sub
err:
End Sub
Private Sub play_Click()
On Error Resume Next
Dim t As Long
t=mciSendString(
open
+ mfn
&
)
Open後邊的空格一定不能丟
Dim ret As String *
t=mciSendString(
status
+ mfn +
length
ret
)
顯示歌曲總長
ret=Left(ret
)
If ret<>
Then
ProgressBar
Min=
ProgressBar
Max=Val(ret)
Label
Caption=gettime(Val(ret))
End If
play
Enabled=False
pause
Enabled=True
stopplay
Enabled=True
back
Enabled=True
prew
Enabled=True
t=mciSendString(
status
+ mfn +
mode
ret
)
得到設備的當前狀態
是播放還是暫停等等
ret=Left(ret
)
StatusBar
Panels(
)
text=ret
在狀態欄顯示播放狀態
t=mciSendString(
play
+ mfn +
form
+ Str(ProgressBar
Value)
&
)
開始播放
Timer
Enabled=True
End Sub
Private Sub pause_Click()
t%=mciSendString(
pause
+ mfn
&
)
發出暫停的命令
play
Enable=True
pause
Enabled=False
stopplay
Enabled=True
back
Enabled=False
prew
Enabled=False
End Sub
Private Sub stopplay_Click()
t%=mciSendString(
stop
+ mfn
&
)
t%=mciSendString(
close
+ mfn
&
)
停止播放
play
Enabled=True
pause
Enabled=False
stopplay
Enabled=False
back
Enabled=False
prew
Enabled=False
End Sub
Private Sub back_Click()
t%=mciSendString(
play
+ mfn +
from
+ Str(ProgressBar
Value
(ProgressBar
Max\
))
&
)
向後跳一小段再播放
End Sub
Private Sub prew_Click()
t%=mciSendString(
play
+ mfn +
from
+ Stri(ProgressBar
Value+(ProgressBar
Max\
))
&
)
向前跳一小段再播放
End Sub
Private Sub Timer
_Timer()
Dim t As Long
Dim ret As String *
t=mciSendString(
status
+ mfn +
position
ret
)
得到當前播放位置
ret=left(ret
)
ProgressBar
Value=Val(ret)
Label
Caption=gettime(Val(ret))
顯示歌曲當前時間
If ProgressBar
Value=ProgressBar
Max Then
stopplay_Click
End If
t=mciSendString(
status
+ mfn +
mode
ret
)
ret=Left(ret
)
StatusBar
Panels(
)
Text=ret
End Sub
Private Sub Form_Unload(Cacel As Integer)
t%=mciSendString(
stop
+ mfn
&
)
t%=mciSendString(
close
+ mfn
&
)
End Sub
Private Function Gettime(position As Long) As String
這個函數的功能是把以長整型表示的時間轉換為電子鐘式的
**:**
Dim min
sec
min=position/
min=min/
sec=min
Int(min)
min=Int(min)
sec=
* sec /
sec=Int(sec *
)
gettime=Str(min) +
:
+ Str(sec)
End Function
圖中
個控制按鈕
其實是把字體設為
Webdings
讓它們的Caption屬性分別為
;
<" "7" "8"
就可以了
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26246.html