Option Explicit
Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As LongPrivate 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 '没有盘符,即时退出循环
'Debug.Print DriveID
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 "cdrom 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
Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As LongPrivate 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 '没有盘符,即时退出循环
'Debug.Print DriveID
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 "cdrom 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
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货