当我们在用软件或影碟机播放VCD时,只要把VCD碟片放入驱动器内,系统就会自动播放,真是方便至极。
其实在VB中我们也可以实现同样的功能,其思路和过程为,VCD的影像文件都在光盘的MPEGAV目录下,文件名一般有两种:avseq01.dat或music01.dat。我们要做的工作就是一旦光驱关闭,便开始检测这两个文件的存在与否,如果存在就将其打开,从而实现了自动播放功能,真的很简单。
说干就干,新建一工程,在窗体(Form1)中加入一个Windows Media Player控件(也可用其他多媒体控件)和一个定时器控件,在Windows Media Player控件属性对话框中将AutoStart设置为True。然后启动菜单编辑器,创建“控制”菜单,并建立“弹出光驱”、“关闭光驱”和“退出”三个子菜单,如图所示(

)。
以下程序在“Windows 98SE+VB 6.0”下调试通过,其源代码如下:
在声明中添加:
Option Explicit
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Dim result As Integer
Dim ReturnString As String * 128
Private Sub Form_Load()
Form1.Caption = "示例"
Timer1.Enabled = True
Timer1.Interval = 1000
End Sub
Private Sub MnuControlClose_Click() '关闭光驱
On Error Resume Next
result = mciSendString("set cdaudio door closed", ReturnString, 127, 0)
Timer1.Interval = 1000
Timer1.Enabled = True
End Sub
Private Sub MnuControlOpen_Click() '弹出光驱
On Error Resume Next
MediaPlayer1.Stop
MediaPlayer1.FileName = ""
Form1.Caption = "示例"
result = mciSendString("set cdaudio door open", ReturnString, 127, 0)
End Sub
Private Sub MnuControlQuit_Click()
Unload Form1
End Sub
Private Sub Timer1_Timer()
Dim fs, d, dc, sFile1, sFile2
Set fs = CreateObject("Scripting.FileSystemObject")
Set dc = fs.Drives
For Each d In dc '查找所有驱动器
If d.DriveType = 4 Then '如果为光驱
sFile1 = d.driveletter + ":\mpegav\avseq01.dat"
sFile2 = d.driveletter + ":\mpegav\music01.dat"
If d.Isready And fs.FileExists(sFile1) Then '判断光驱是否准备好,文件是否存在
Timer1.Enabled = False
Form1.Caption = "示例 - " + sFile1
MediaPlayer1.FileName = sFile1
MediaPlayer1.Play
End If
If d.Isready And fs.FileExists(sFile2) Then
Timer1.Enabled = False
Form1.Caption = "示例 - " + sFile2
MediaPlayer1.FileName = sFile2
MediaPlayer1.Play
End If
End If
Next
End Sub
赶快按下F5键运行一下,只要用菜单控制光驱的弹出与关闭,就能实现自动播放的功能了。需要说明的是,由于系统和控件的限制,该示例尚不能播放一些DVCD片。对控件进一步开发,将其变成真正的超级播放器,那可就是你的工作了。