Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Как можно получить размер локал. дисков Добавлено: 04.12.07 21:58  

Автор вопроса:  ZeroHour | ICQ: 397113309 
Как можно получить размер локал. дисков. общий размеры и сколько свобдное места осталось

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #1
Добавлено: 04.12.07 22:21
Я вот так сделал:
Private Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTotalNumberOfClusters As Long) As Long
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-сайт: winandfx.narod.ru
 Профиль | | #2
Добавлено: 04.12.07 22:23
Мне пришлось использовать Вариантные переменные потому что используется перемножение. Может есть способ обйтись без Variant?

Ответить

Номер ответа: 3
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #3
Добавлено: 05.12.07 01:34
double?

Ответить

Номер ответа: 4
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #4
Добавлено: 05.12.07 01:36
а,реально=) саму-то функцию догадался сделать "эз дабл"

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам