چگونه مي توان درايو (يا درايوهاي) سي دي را توسط وي بي تشخيص داد؟
براي اينکار از دو تابع از کتابخانه kernel32 به نامهاي GetLogicalDriveStrings و GetDriveType استفاده مي شود. اين دو تابع را بصورت زير declare کنيد:
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 Long

سپس ابتدا متغير allDrives را که رشته اي 64 کاراکتري از space است، بصورت زير تعريف کنيد:
allDrives$ = Space$(64)
حال با استفاده از تابع GetLogicalDriveStrings ليست کليه درايوهاي سيستم را استخراج مي کنيم:
ret& = GetLogicalDriveStrings(Len(allDrives$), allDrives$)
allDrives$ = Left$(allDrives$, ret&)

حال با استفاده از يک حلقه و چک کردن درايوها با استفاده از تابع GetDriveType مي توانيم تشخيص دهيم اين درايو مربوط به سي دي است يا نه. براي اينکار اگر مقدار بازگشتي تابع به ازاي يک درايو برابر عدد 5 باشد، آن درايو سي دي است.
Do
pos% = InStr(allDrives$, Chr$(0))
If pos% Then
JustOneDrive$ = Left$(allDrives$, pos% - 1)

allDrives$ = Mid$(allDrives$, pos% + 1, Len(allDrives$))
DriveType& = GetDriveType(JustOneDrive$)
If DriveType& = 5 Then
MsgBox UCase$(JustOneDrive$) & " is a CD Drive"
End If
End If
Loop Until allDrives$ = ""



منبع: egoldcity.com