用 VB 開啟任意盤(硬碟/隨身碟/光碟)的檔案. (轉)

worldblog發表於2008-01-22
用 VB 開啟任意盤(硬碟/隨身碟/光碟)的檔案. (轉)[@more@]

在打包移植的時候,需要用到 光碟/隨身碟 。在不知道機子上的光碟的磁碟機代號是多少,或不知道磁碟機代號的類別和磁碟機代號的總數的話。

......... 可以用如下方法來判斷 .........

要用到的 描述:

返回機子上的所有磁碟機代號

GetLogicalDriveStrings 

VB宣告 Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long 說明 獲取一個字串,其中包含了當前所有邏輯器的根驅動器路徑 返回值 Long,裝載到lpBuffer的字元數量(排除空中止字元)。如緩衝區的長度不夠,不能容下路徑,則返回值就變成要求的緩衝區大小。零表示失敗。會設定GetLastError 參數列 引數型別及說明 nBufferLength Long,lpBuffer字串的長度 lpBuffer String,用於裝載邏輯驅動器名稱的字串。每個名字都用一個NULL字元分隔,在最後一個名字後面用兩個NULL表示中止(空中止)

 

不同的盤型別可以用 GetDriveType 來判斷.

GetDriveType

VB宣告 Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long 說明 判斷一個驅動器的型別 返回值 Long,如驅動器不能識別,則返回零。如指定的目錄不存在,則返回1。如成功,則用下述任何一個常數指定驅動器型別:DRIVE_REMOVABLE, DRIVE_FIXED, DRIVE_REMOTE, DRIVE_CDROM 或 DRIVE_RISK 參數列 引數型別及說明 nDrive String,包含了驅動器根目錄路徑的一個字串

 

如下用開啟光碟指定的裡的做例子:

Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long:namespace prefix = o ns = "urn:schemas--com::office" />

Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

 

Private Sub Form_Click()

  Dim StrDrive As String  '磁碟機代號串(A: C: D:...)

  Dim DriveID As String  '磁碟機代號(如:A:)

  StrDrive = String(100, Chr$(0))  '初始化磁碟機代號串

  Call GetLogicalDriveStrings(100, StrDrive) '返回磁碟機代號串

  Dim i As Integer

  '返回光碟磁碟機代號到陣列

  For i = 1 To 100 Step 4  '注意這裡是4

  DriveID = Mid(StrDrive, i, 3)  '列舉磁碟機代號

  If DriveID = Chr$(0) & Chr(0) & Chr(0) Then Exit For '沒有磁碟機代號,即時退出迴圈

 

  If GetDriveType(DriveID) = 5 Then Call Pro(DriveID)

  '如果列舉到的盤是CD-ROM,轉到 ShellPro 子程式

  Next i

End Sub

 

'子程式:::::開啟檔案

Sub ShellPro(DrivePro As String)

 

 On Error GoTo Err_File:

  If Not IsEmptyCDROM(DrivePro) Then

  Shell (DrivePro & "Hello.exe")  '開啟檔案路徑

  Unload Me

  End  '並結束本程式

  Else

  De.Print "CD-ROM is Empty"

  End If

Err_File:

  If Err.Description = "錯語的檔名或號碼" Then Exit Sub

End Sub

 

Function IsEmptyCDROM(sDrive As String)

  Dim s

 

  On Error GoTo ErrHandle

  s = Dir(sDrive + "*.*")

  IsEmptyCDROM = False

  Exit Function

ErrHandle:

  IsEmptyCDROM = True

End Function

 

注:以上程式碼可隨意,修改... :)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-998203/,如需轉載,請註明出處,否則將追究法律責任。

相關文章