在程序打包移植的时候,需要用到 光盘/U盘 。在不知道机子上的光盘的盘符是多少,或不知道盘符的类别和盘符的总数的话。
......... 可以用如下方法来判断 .........
要用到的 api 描述:
返回机子上的所有盘符
GetLogicalDriveStrings
不同的盘类型可以用 GetDriveType 来判断.
GetDriveType
如下用打开光盘指定的里的文件做例子:
Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As LongXML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office: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 shellPro(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
Debug.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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10752043/viewspace-998203/