Страница: 1 |
Страница: 1 |
Вопрос: Как можно получить размер локал. дисков
Добавлено: 04.12.07 21:58
Автор вопроса: ZeroHour | ICQ: 397113309
Как можно получить размер локал. дисков. общий размеры и сколько свобдное места осталось
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #1
Добавлено: 04.12.07 22:21
Я вот так сделал:
Enum DiskSpaceParam
TotalSpaceInBytes = 0
FreeSpaceInBytes = 1
UsedSpaceInBytes = 2
FreeSpaceInPercent = 3
UsedSpaceInPercent = 4
End Enum
' Получение данных о пространстве на диске
Public Function GetDiskSpace2(ByVal Disk As String, ByVal Param As DiskSpaceParam, Optional ByVal Return_MB As Boolean) As Double
Dim SxC As Variant, BxS As Variant, NoFC As Variant, TNoC As Variant
If GetDiskFreeSpace(Left(Disk, 3), SxC, BxS, NoFC, TNoC) = 0 Then GetDiskSpace2 = 0: Exit Function
Select Case Param
Case 0 ' Полное пространство на диске в байтах
GetDiskSpace2 = BxS * SxC * TNoC
Case 1 ' Свободное пространство на диске в байтах
GetDiskSpace2 = BxS * SxC * NoFC
Case 2 ' Занятое пространство на диске в байтах
GetDiskSpace2 = BxS * SxC * (TNoC - NoFC)
Case 3 ' Свободное пространство на диске в процентах
GetDiskSpace2 = CLng(NoFC / TNoC * 100)
Case 4 ' Занятое пространство на диске в процентах
GetDiskSpace2 = CLng((1 - NoFC / TNoC) * 100)
Case Else
GetDiskSpace2 = Null
End Select
If Return_MB = False Or Param > 2 Then Exit Function 'т.е., в метрах можно выразить только первые 3 значения
GetDiskSpace2 = GetDiskSpace2 / 1048576
End Function
Номер ответа: 2
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #2
Добавлено: 04.12.07 22:23
Мне пришлось использовать Вариантные переменные потому что используется перемножение. Может есть способ обйтись без Variant?
Номер ответа: 3
Автор ответа:
Ra$cal
ICQ: 8068014
Вопросов: 18
Ответов: 817
Web-сайт:
Профиль | | #3
Добавлено: 05.12.07 01:34
double?
Номер ответа: 4
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #4
Добавлено: 05.12.07 01:36
а,реально саму-то функцию догадался сделать "эз дабл"