Часто задаваемые вопросы и ответы по программированию на VB
Последнее обновление: 28.03.03
Q: Как определить какие диски установлены в системе?
А1 (M@trix): Если юзер не использует прогу типа dnameex-a (диск С: мона назвать "АВС"), то используйте это.

Option Explicit
'константы, соответствующие возможным значениям,
'возвращаемым функцией GetDriveType
Const DRIVE_REMOVABLE = 2
Const DRIVE_FIXED = 3
Const DRIVE_REMOTE = 4
Const DRIVE_CDROM = 5
Const DRIVE_RAMDISK = 6

Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

Private Sub Form_Click()
Dim i, Drv, D$
For i = 0 To 25 ' проверяем все возможные диски от А до Z
D$ = Chr$(i + 65) & ":\"
Drv = GetDriveType(D$)
Select Case Drv
Case DRIVE_REMOVABLE
Print "Drive " & D$ & " is removable."
Case DRIVE_FIXED
Print "Drive " & D$ & " is fixed."
Case DRIVE_REMOTE
Print "Drive " & D$ & " is remote."
Case DRIVE_CDROM
Print "Drive " & D$ & " is CD-ROM."
Case DRIVE_RAMDISK
Print "Drive " & D$ & " is RAM disk."
Case Else
End Select
Next i
End Sub

A2 (Lamer): C использованием Microsoft Scripting Runtime (файл srcrun.dll). Подключить ее можно через
Project->References. Программа примерно выгляди так:

Dim drv
Dim fso
set fso = CreateObject("Scripting.FileSystemObject")
For Each drv In fso.Drives
MsgBox drv.DriveLetter & " " & drv.DriveType
Next

drv.DriveType принимает значения
1 - съёмный
2 - жёсткий
3 - сетевой
4 - CD-ROM

FAQ составлен по материалам Форума на Исходниках.Ру.
Составитель: Crew
Copyright © 2002 by Sources.ru. All rights reserved.