程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 在Visual Basic 6.0中實現自動播放VCD

在Visual Basic 6.0中實現自動播放VCD

編輯:vc教程

《超級解霸》等VCD播放軟件一般都有個按鈕或菜單選項,叫做“播放VCD”,單擊即可自動播放VCD影片。如果文件路徑是固定的, 那只用多媒體控件(mmcontrol)即可實現,但對於不同電腦來說,因為硬盤的邏輯分區數量不同,光盤機的路徑很可能是不同的。它到底是怎樣實現的呢?下面,請看我詳細分析:

用“regedit.exe”查看Windows98的注冊表中光盤機的屬性項(hkey_local_machine, enum, scsi),比較硬盤機的屬性項(hkey_local_machine, enum, esdi)和軟盤機
的屬性項(hkey_local_machine, enum, flop),就可發現:不同的盤體,是用“devicetype”這個參數來區別的,硬盤的devicetype是“0”, 軟盤是“0a”,光盤機是“5”。再用“devicetype”為關鍵字,查找有關win32 API的編程手冊,就可得到辨別不同盤體的函數“getdevicetype”了。

有了這個函數,使用以下句子,即可得到光盤機盤符:

If GetDriveType("d:") <> 5 Then
If GetDriveType("e:") <> 5 Then
If GetDriveType("f:") <> 5 Then
If GetDriveType("g:") <> 5 Then
drivecd = "H"
GoTo getcdfiles
End If
drivecd = "G"
GoTo getcdfiles
End If
drivecd = "F"
GoTo getcdfiles
End If
drivecd = "E"
GoTo getcdfiles
Else
drivecd = "D"
End If
getcdfiles:

程序使用窮舉法,依次判斷D、E、F、G盤的devicetype是否為“5”,都不是則光盤機為H(盤符超過H的機器不多,所以窮舉到此為止),得到的“drivecd”就是光盤機盤符。

因為所有VCD影片的路徑都是mpegav,所以用VB函數"Dir()"便可得到完整的播放路徑:
MMControl1.FileName = drivecd & ":Mpegav" & Dir(drivecd & ":Mpegav*.dat")。

以下源程序,具體實現了自動播放VCD。程序窗體中只有一個多媒體控件——MMcontrol1,程序一旦運行即從第一個文件開始自動播放,按多媒體控件上的“next”鍵,播放下一個文件。

'聲明GetDriveType函數
Private Declare Function GetDriveType Lib "kernel32" Alias " GetDriveTypeA" (ByVal nDrive As String) As Long
Dim files() As String
Dim drivecd As String
Dim i As Integer
Dim j As Integer

Private Sub Form_Load()
'判斷光盤機盤符
If GetDriveType("d:") <> 5 Then
If GetDriveType("e:") <> 5 Then
If GetDriveType("f:") <> 5 Then
If GetDriveType("g:") <> 5 Then
drivecd = "H"
GoTo getcdfiles
End If
drivecd = "G"
GoTo getcdfiles
End If
drivecd = "F"
GoTo getcdfiles
End If
drivecd = "E"
GoTo getcdfiles
Else
drivecd = "D"
End If

'將所有VCD文件放入數組files()
getcdfiles:
On Error GoTo cderr:
s = Dir(drivecd & ":Mpegav*.dat")
i = 1
While s <> ""
ReDim Preserve files(i) As String
files(i) = s
i = i + 1
s = Dir()
Wend
j = 1
Call vcdplay

On Error GoTo 0
Exit Sub
cderr:
MsgBox "CD is not ready!"
Unload Me
End Sub

'判斷是否播放下一個文件
Private Sub MMControl1_StatusUpdate()
If MMControl1.Position = MMControl1.Length Then
j = j + 1
If j > i - 1 Then j = 1
Call vcdplay
End If
End Sub

'播放VCD文件
Private Sub vcdplay()
MMControl1.Command = "stop"
MMControl1.Command = "close"
MMControl1.FileName = drivecd & ":Mpegav" & files(j)
MMControl1.Command = "open"
MMControl1.Command = "play"
End Sub

以上程序在中文Windows98,Visual Basic 6.0上通過。

  1. 上一頁:
  2. 下一頁:
欄目導航
Copyright © 程式師世界 All Rights Reserved