PDA

مشاهده نسخه کامل : چگونه می توان درایو ( یا درایوهای ) سی دی را توسط وی بی تشخیص داد



2600
19-09-07, 06:07
از دو تابع از کتابخانه 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$ = ""