'引用 Microsoft Scripting Runtime
Dim x As New Scripting.FileSystemObject
'Dim y As Scripting.Drive
Dim sMsg As String
sMsg = "CD-ROM "
Dim i As Integer
For i = Asc("C") To x.Drives.Count + Asc("C") - 2
    If x.Drives.Item(Chr(i)).DriveType = CDRom Then
      sMsg = "CD-ROM " & x.Drives.Item(Chr(i)).DriveLetter
      Debug.Print "IsReady: " & x.Drives.Item(Chr(i)).IsReady
      If x.Drives.Item(Chr(i)).IsReady Then
        sMsg = sMsg & " 有 Disc - " & x.Drives.Item(Chr(i)).VolumeName
        Debug.Print x.Drives.Item(Chr(i)).FileSystem
      Else
        sMsg = sMsg & " 无 Disc"
      End If
      MsgBox sMsg
    End If
Next i

解决方案 »

  1.   

    API 实现,不用任何控件、组件。
    '=================================================================
    Option ExplicitPublic Const DRIVE_CDROM = 5
    Public Const DRIVE_FIXED = 3
    Public Const DRIVE_RAMDISK = 6
    Public Const DRIVE_REMOTE = 4
    Public Const DRIVE_REMOVABLE = 2
    Public Const DRIVE_UNKNOWN = 0Private Declare Function GetDriveTypeA Lib "kernel32" (ByVal nDrive As String) As Long
    Public Function sDriveType(sDrive As String) As String
    Dim lRet As Long    lRet = GetDriveTypeA(sDrive & ":\")
        Select Case lRet
            Case 0
                sDriveType = "Unknown"
            Case 1
                sDriveType = "Unknown"
            Case DRIVE_CDROM:
                sDriveType = "CD-ROM Drive"
                
            Case DRIVE_REMOVABLE:
                sDriveType = "Removable Drive"
                
            Case DRIVE_FIXED:
                sDriveType = "Fixed Drive"
                
            Case DRIVE_REMOTE:
                sDriveType = "Remote Drive"
            End Select
    End FunctionPublic Function GetDriveType(sDrive As String) As Long
      Dim lRet As Long
      lRet = GetDriveTypeA(sDrive & ":\")
      
      If lRet = 1 Then
         lRet = 0
      End If  GetDriveType = lRet
    End Function
    '取得光驱的盘符
    Function GetCDROMDrive() As String
    Dim i As Integer
    For i = 97 To 122
        If GetDriveType(Chr(i)) = DRIVE_CDROM Then
            GetCDROMDrive = Chr(i)
            Exit Function
        End If
    Next
    End Function