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

在VisualBasic6.0中實現自動播放VCD

編輯:VB綜合教程
《超級解霸》等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”為關鍵字,查找有關win32API的編程手冊,就可得到辨別不同盤體的函數“getdevicetype”了。
  
  有了這個函數,使用以下句子,即可得到光盤機盤符:
  
  IfGetDriveType("d:")<>5Then
  IfGetDriveType("e:")<>5Then
  IfGetDriveType("f:")<>5Then
  IfGetDriveType("g:")<>5Then
  drivecd="H"
  GoTogetcdfiles
  EndIf
  drivecd="G"
  GoTogetcdfiles
  EndIf
  drivecd="F"
  GoTogetcdfiles
  EndIf
  drivecd="E"
  GoTogetcdfiles
  Else
  drivecd="D"
  EndIf
  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函數
  PrivateDeclareFunctionGetDriveTypeLib"kernel32"Alias"GetDriveTypeA"(ByValnDriveAsString)AsLong
  Dimfiles()AsString
  DimdrivecdAsString
  DimiAsInteger
  DimjAsInteger
  
  PrivateSubForm_Load()
  '判斷光盤機盤符
  IfGetDriveType("d:")<>5Then
  IfGetDriveType("e:")<>5Then
  IfGetDriveType("f:")<>5Then
  IfGetDriveType("g:")<>5Then
  drivecd="H"
  GoTogetcdfiles
  EndIf
  drivecd="G"
  GoTogetcdfiles
  EndIf
  drivecd="F"
  GoTogetcdfiles
  EndIf
  drivecd="E"
  GoTogetcdfiles
  Else
  drivecd="D"
  EndIf
  
  '將所有VCD文件放入數組files()
  getcdfiles:
  OnErrorGoTocderr:
  s=Dir(drivecd&":Mpegav*.dat")
  i=1
  Whiles<>""
  ReDimPreservefiles(i)AsString
  files(i)=s
  i=i 1
  s=Dir()
  Wend
  j=1
  Callvcdplay
  
  OnErrorGoTo0
  ExitSub
  cderr:
  MsgBox"CDisnotready!"
  UnloadMe
  EndSub
  
  '判斷是否播放下一個文件
  PrivateSubMMControl1_StatusUpdate()
  IfMMControl1.Position=MMControl1.LengthThen
  j=j 1
  Ifj>i-1Thenj=1
  Callvcdplay
  EndIf
  EndSub
  
  '播放VCD文件
  PrivateSubvcdplay()
  MMControl1.Command="stop"
  MMControl1.Command="close"
  MMControl1.FileName=drivecd&":Mpegav"&files(j)
  MMControl1.Command="open"
  MMControl1.Command="play"
  EndSub
  
  以上程序在中文Windows98,VisualBasic6.0上通過。->

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