Const msg1 As String="请在这里输入你想显示的一段话!"
Const msg2 As String="这里是对话框要显示的标题."
MsgBox msg1,vbOkOnly,msg2 '此处代码一定不能添加()
End Sub2、 form1按钮点击事件:
form2.show
form1.hide 3、
启动VB程序,在窗体上放置6个命令按钮,三个标签,一个公用对话框、一个进度条、一个状态栏和一个计时器,窗本的布置请参考附图按钮"Open MP3 File"是用来打开对话框选择MP3文件,其他5个按钮分别为Play(播放)、Pause(暂停)、Stopplay(停止播放)、Back(向后跳跃)、Prew(向前跳跃)。Label1用来表示歌曲当前时间;label2放在时度条的最左边,Caption属性为"00:00";lable3放在时度条的右边,用来表示歌曲总长。下面就可以编写代码了。首先在窗体的"通用声明"部分声明函数
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
Timer1.Enabled = False
Timer1.Interval = 500
End Sub
Private Sub open_Click()
On Error GoTo err
With CommonDialog1
.CancelError = True
.Filter = "音乐文件|*.mp3*.wav*.mid"
.Flags = cdlOFNNoChangeDir And cdlOFNPathMustExist
.Action = 1
stopplay_Click '停止按钮同时可以设备初始化
mfn = .FileName '这个程序中文件名一定不能带空格
Form1.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, 0&, 0, 0) 'Open后边的空格一定不能丢
Dim ret As String * 128
t = mciSendString("status " + mfn + " length", ret, 128, 0)
'显示歌曲总长
ret = Left(ret, 8)
If ret <>"" Then
ProgressBar1.min = 0
ProgressBar1.Max = Val(ret)
Label3.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, 128, 0)
'得到设备的当前状态,是播放还是暂停等等
ret = Left(ret, 8)
StatusBar1.Panels(1).Text = ret
'在状态栏显示播放状态
t = mciSendString("play " + mfn + " form " + Str(ProgressBar1.Value), 0&, 0, 0)
'开始播放
Timer1.Enabled = True
End Sub
Private Sub pause_Click()
t% = mciSendString("pause " + mfn, 0&, 0, 0)
'发出暂停的命令
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, 0&, 0, 0)
t% = mciSendString("close " + mfn, 0&, 0, 0)
'停止播放
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(ProgressBar1.Value - (ProgressBar1.Max \ 10)), 0&, 0, 0) '向后跳一小段再播放
End Sub
Private Sub prew_Click()
t% = mciSendString("play " + mfn + " from " + Stri(ProgressBar1.Value + (ProgressBar1.Max \ 10)), 0&, 0, 0) '向前跳一小段再播放
End Sub
Private Sub Timer1_Timer()
Dim t As Long
Dim ret As String * 128
t = mciSendString("status " + mfn + " position", ret, 0, 0)
'得到当前播放位置
ret = Left(ret, 8)
ProgressBar1.Value = Val(ret)
Label1.Caption = Gettime(Val(ret))
'显示歌曲当前时间
If ProgressBar1.Value = ProgressBar1.Max Then
stopplay_Click
End If
t = mciSendString("status " + mfn + " mode", ret, 128, 0)
ret = Left(ret, 8)
StatusBar1.Panels(1).Text = ret
End Sub
Private Sub Form_Unload(Cacel As Integer)
t% = mciSendString("stop " + mfn, 0&, 0, 0)
t% = mciSendString("close " + mfn, 0&, 0, 0)
End Sub
Private Function Gettime(position As Long) As String
'这个函数的功能是把以长整型表示的时间转换为电子钟式的"**:**"
Dim min, sec
min = position / 1000
min = min / 60
sec = min - Int(min)
min = Int(min)
sec = 60 * sec / 100
sec = Int(sec * 100)
Gettime = Str(min) + ":" + Str(sec)
End Function
试一下不就知道了,不能。逻辑上来说也不应能,vb脚本与vb根据用途有不同的市场定位,如果脚本可以调用api的话,那完全可以通过它实现建立窗口等等与vb一样的功能了,那不就与vb一样了吗。利用com组件可以间接实现,但从安全上来说也不应该能,比如网页上的vb脚本,本应该与本地资源隔离的,但可以通过组件间接访问本地硬盘,这挺不安全的。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)