Обнаружить все жесткие диски на компе - VB
Формулировка задачи:
день добрый нужно узнать какие жесткие диски есть на компе. Один из них (на которой винда стоит)
я узнаю так:
но мне и другие нужны. Спасибо
Решение задачи: «Обнаружить все жесткие диски на компе»
textual
Листинг программы
'Option Explicit
Declare Function GetDriveType Lib "kernel32.dll" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (Dst As Any, Src As Any, ByVal Length As Long)
Dim Root$, ptrRoot&
Sub Drv_List()
DrvList$ = "ABCDEFGHIJKLMNOPQRTSUVWXYZ"
For i% = 1 To 26
Root$ = Mid$(DrvList$, i%, 1) + ":\"
' If GetDriveType(Root$) = 3 Then Debug.Print Root$
Next i%
End Sub
Sub Drv_List1()
For i% = Asc("A") To Asc("Z")
Root$ = Chr(i) + ":\"
' If GetDriveType(Root$) = 3 Then Debug.Print Root$
Next i%
End Sub
Sub Drv_List2()
Dim i&
For i = Asc("A") To Asc("Z")
Mid(Root, 1) = Chr$(i)
' If GetDriveType(Root) = 3 Then Debug.Print Root$
Next
End Sub
Sub Drv_List3()
Dim i&
For i = Asc("A") To Asc("Z")
CopyMemory ByVal ptrRoot, i, 2&
' If GetDriveType(Root) = 3 Then Debug.Print Root$
Next
End Sub
Sub test()
Dim i&, t!, N&, j&
N = 100000
For j = 0 To 1
Debug.Print IIf(j, "зачетный", "прогревочный") & " забег"
DoEvents
t = Timer
For i = 1 To N
Drv_List
Next
Debug.Print Timer - t
DoEvents
t = Timer
For i = 1 To N
Drv_List1
Next
Debug.Print Timer - t
DoEvents
t = Timer
Root = " :\"
For i = 1 To N
Drv_List2
Next
Debug.Print Timer - t
DoEvents
t = Timer
Root = " :\"
ptrRoot = StrPtr(Root)
For i = 1 To N
Drv_List3
Next
Debug.Print Timer - t
Next
End Sub