Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colDisks = objWMI.ExecQuery("Select * from Win32_LogicalDisk")
sTemp = "Количество дисков: " & colDisks.Count & vbCr & vbCr
For Each curDisk in colDisks
diskType = curDisk.DriveType
diskName = curDisk.DeviceID
Select Case diskType
Case 1
sTemp = sTemp & diskName & vbTab & "Не обнаружен корневой каталог. Тип накопителя не определён." & vbCr
Case 2
If diskName = "A:" Or diskName = "B:" Then
sTemp = sTemp & diskName & vbTab & "Накопитель на гибких дисках." & vbCr
Else
sTemp = sTemp & diskName & vbTab & "Мобильный накопитель (Zip, USB и т.д.)." & vbCr
End If
Case 3
sTemp = sTemp & diskName & vbTab & "Жёсткий диск." & vbCr
Case 4
sTemp = sTemp & diskName & vbTab & "Сетевой диск." & vbCr
Case 5
sTemp = sTemp & diskName & vbTab & "Накопитель на оптических дисках." & vbCr
Case 6
sTemp = sTemp & diskName & vbTab & "RAM-накопитель." & vbCr
Case Else
sTemp = sTemp & diskName & vbTab & "Тип накопителя не определён." & vbCr
End Select
Next
MsgBox sTemp
System диски
И узнать какой буквой обозначен диск cd-roma? :confused:
Например, так:
попробуй использовать API функции GetLogicalDriveStrings и GetDriveType. вот примерчик.
Большое спасибо ...:)
Как узнать отдельно количество дисков?
Чем не нравится уже предложенный вариант?
Код:
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colDisks = objWMI.ExecQuery("Select * from Win32_LogicalDisk")
sTemp = "Количество дисков: " & colDisks.Count
Set colDisks = objWMI.ExecQuery("Select * from Win32_LogicalDisk")
sTemp = "Количество дисков: " & colDisks.Count
Код:
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colDisks = objWMI.ExecQuery("Select * from Win32_LogicalDisk")
sTemp = "Количество дисков: " & colDisks.Count
Set colDisks = objWMI.ExecQuery("Select * from Win32_LogicalDisk")
sTemp = "Количество дисков: " & colDisks.Count
мне надо одельно к примеру: количество локальных дисков и т.д :)
Код:
If GetDriveType(drive) = 5
вместо 5 попробуй следующие константы:
DRIVE_FIXED = 3 - жесткий диск
DRIVE_RAMDISK = 6 - виртуальный диск
DRIVE_REMOTE = 4 - сетевой диск
DRIVE_REMOVABLE = 2 - гибкий диск
и считай сколько каких есть это уже просто.
В принципе, kosfiz уже дал совет - вести счётчики по каждому типу обнаруженных дисков.
Могу добавить лишь следующее:
1. Инструментарий WMI позволяет посчитать количество дисков определённого типа без перебора всей коллекции. Вот пример:
Код:
curType = 4 'сетевые диски
Set colDisks = objWMI.ExecQuery("Select * from Win32_LogicalDisk Where DriveType=" & curType)
MsgBox "Кол-во сетевых дисков: " & colDisks.Count
Set colDisks = objWMI.ExecQuery("Select * from Win32_LogicalDisk Where DriveType=" & curType)
MsgBox "Кол-во сетевых дисков: " & colDisks.Count
2. В инструментарии WMI есть отдельные классы, предназначенные для работы с конкретным типом физических устойств, например:
- Win32_FloppyDrive
- Win32_DiskDrive (для НЖМД)
- Win32_CDROMDrive
Код:
Set colDisks = objWMI.ExecQuery("Select * from Win32_CDROMDrive")
MsgBox "Кол-во приводов для компакт-дисков: " & colDisks.Count
MsgBox "Кол-во приводов для компакт-дисков: " & colDisks.Count