بدست آوردن درایوهای منطقی سیستم (My Drives)

تازه ها

بدست آوردن درایوهای منطقی سیستم (My Drives)

نظرات ()


احتمالا تا حالا براتون پیش اومده که برای یک کار خاص مثلا چک کردن وضعیت فایل AUTORUN.INF نیاز داشته باشید که تمامه درایوهای سیستم رو چک کنید. خب چطوری میشه فهمید که چه درایوهایی وجود داره؟
اینجا یک تابع API معرفی میکنیم که کارش همینه (درایوهای منطقی رو برمیگردونه) کافیه به شکلی که در زیر میبینید ازش استفاده کنید.
یک پروژه جدید باز کنید و کدهای زیر رو تو قسمت جنرال فرمتون کپی کنید.

Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Sub Form_Load()
    Me.AutoRedraw = True
    Drives = GetMyLogicalDrives
    For i = 0 To UBound(Drives)
        Print Drives(i)
    Next
End Sub
Public Function GetMyLogicalDrives()
    Dim strBuffer As String
    strBuffer = String(255, Chr$(0))
    ret& = GetLogicalDriveStrings(255, strBuffer)
    strBuffer = Replace(strBuffer, Chr(0), " ")
    strBuffer = Trim(strBuffer)
    strDrives = Split(strBuffer)
    GetMyLogicalDrives = strDrives
End Function

تابع GetLogicalDriveStrings در واقع به خودیه خود نامه تمامه درایو ها رو میده اما مشکلش اینه که تمامه حروف رو تو یک رشته بر میگردونه و نام درایو ها رو با NULL جدا میکنه که اینجا برای رفع این مشکل از تابع Split استفاده کردیم و رشته جدا کننده رو NULL قرار دادیم با این کار یک آرایه درست میشه که تو هر خونه نام یک درایو قرار گرفته.

موفق و پیروز باشید.