احتمالا تا حالا براتون پیش اومده که برای یک کار خاص مثلا چک کردن وضعیت فایل 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 قرار دادیم با این کار یک آرایه درست میشه که تو هر خونه نام یک درایو قرار گرفته.
موفق و پیروز باشید.
آموزش ساخت فایلهای RES (لود کردن هر فایلی تو برنامه)
strbuffer ,رو ,یک ,as ,drives ,تابع ,as string ,که تمامه ,درایو ها ,ها رو ,درایوهای منطقی
درباره این سایت