Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/02/2004, 02:44
Martinq
 
Fecha de Ingreso: febrero-2004
Ubicación: U.S.A.
Mensajes: 7
Antigüedad: 20 años, 3 meses
Puntos: 0
'Este es un ejemplo de un form con un cuadro de Texto en el que se introduce la Unidad por ej. C:\

'Label3(0) muestra la Etiqueta del volumen
'Label3(1) muestra el num. de serie del volumen
'Label3(2) muestra el tipo de sistema de archivos

Hay dos botones Command1 (Mostrar) y Command2 (Salir)

Option Explicit

'Declaración de la función, sólo está en la API de 32 bits
'
Private Declare Function GetVolumeInformation Lib "Kernel32" _
Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, _
ByVal lpVolumeNameBuffer As String, _
ByVal nVolumeNameSize As Long, _
lpVolumeSerialNumber As Long, _
lpMaximumComponentLength As Long, _
lpFileSystemFlags As Long, _
ByVal lpFileSystemNameBuffer As String, _
ByVal nFileSystemNameSize As Long) As Long


Private Sub Command1_Click()
'Acción
Dim lVSN As Long, n As Long, s1 As String, s2 As String
Dim unidad As String
Dim sTmp As String

On Local Error Resume Next

'Se debe especificar el directorio raiz
unidad = Trim$(Text1)

'Reservar espacio para las cadenas que se pasarán al API
s1 = String$(255, Chr$(0))
s2 = String$(255, Chr$(0))
n = GetVolumeInformation(unidad, s1, Len(s1), lVSN, 0, 0, s2, Len(s2))
's1 será la etiqueta del volumen
'lVSN tendrá el valor del Volume Serial Number (número de serie del volumen)
's2 el tipo de archivos: FAT, etc.

'Convertirlo a hexadecimal para mostrarlo como en el Dir.
sTmp = Hex$(lVSN)

Label3(0) = s1
Label3(1) = Left$(sTmp, 4) & "-" & Right$(sTmp, 4)
Label3(2) = s2
End Sub


Private Sub Command2_Click()
Unload Me
End
End Sub


Private Sub Form_Unload(Cancel As Integer)
'Asegurarnos de "liberar" la memoria.
Set Form1 = Nothing
End Sub