Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: cobein en 28 Mayo 2008, 13:14 pm



Título: Drive Space Format (snippet)
Publicado por: cobein en 28 Mayo 2008, 13:14 pm
Aca les dejo un snippet que muestra como obtener el espacio libre, total y disponible de una unidad y formatearlo.

Código
  1. Option Explicit
  2.  
  3. Private Declare Function SHGetDiskFreeSpace Lib "shell32" Alias "SHGetDiskFreeSpaceA" (ByVal pszVolume As String, pqwFreeCaller As Currency, pqwTot As Currency, pqwFree As Currency) As Long
  4. Private Declare Function StrFormatByteSize64A Lib "SHLWAPI.DLL" (ByVal qdw As Currency, ByVal pszBuf As String, ByVal uiBufSize As Long) As Long
  5. Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long
  6.  
  7. Private Sub Form_Load()
  8.    Dim cFreeCaller As Currency
  9.    Dim cTotal      As Currency
  10.    Dim cFreeTotal  As Currency
  11.    Dim cFormat     As Currency
  12.    Dim sBuff       As String
  13.  
  14.    If Not SHGetDiskFreeSpace( _
  15.       Environ$("HOMEDRIVE"), _
  16.       cFreeCaller, _
  17.       cTotal, _
  18.       cFreeTotal) = 0 Then
  19.  
  20.        Debug.Print "Drive: " & Environ$("HOMEDRIVE")
  21.        cFormat = cFreeTotal:   GoSub Format: Debug.Print "Total Free Space: " & sBuff
  22.        cFormat = cFreeCaller:  GoSub Format: Debug.Print "Free Caller: " & sBuff
  23.        cFormat = cTotal:       GoSub Format: Debug.Print "Total Space: " & sBuff
  24.  
  25.    End If
  26.  
  27.    Exit Sub
  28. Format:
  29.    sBuff = Space(32)
  30.    StrFormatByteSize64A cFormat, sBuff, 32
  31.    sBuff = Left(sBuff, lstrlen(sBuff))
  32.    Return
  33. End Sub
  34.