Thursday, August 11, 2005

Obtener información de disco en Visual Basic.

Estoy utilizando Visual Basic 6, y me gustaría saber como puedo encontrar los datos de cabecera que aparecen cada vez que se ejecuta el comando dir del DOS ya sea en el disco duro, en un disquete o en un CD-ROM; por ejemplo: El volumen de la unidad C no tiene etiqueta El numero de serie del volumen es 1740-1080 Directorio de C:
La función que necesita para averiguar toda esa información es la siguiente: Public Function InfoVolumen(ByVal Raiz As String, _ Optional ByRef Label As String, _ Optional ByRef NumSerie As Long, _ Optional ByRef TipoStmaArchivos As String) As Boolean Raiz = Raiz Label = Space$(255) & vbNullChar TipoStmaArchivos = Space$(255) & vbNullChar InfoVolumen = GetVolumeInformation(Raiz, Label,_ Len(Label), NumSerie, vbNull, vbNull, TipoStmaArchivos,_ Len(TipoStmaArchivos)) If InfoVolumen = True Then Dim Pos As Long Pos = InStr(Label, vbNullChar) Label = Left$(Label, Pos - 1) Pos = InStr(TipoStmaArchivos, vbNullChar) TipoStmaArchivos = Left$(TipoStmaArchivos, Pos - 1) End If End Function Para poder usarla deberá añadir las siguientes declaraciones a su módulo o formulario: 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 Como puede observar la información se devuelve en las variables que se le pasan como parámetro. Tiene que tener cuidado de que el nombre de la unidad incluya los dos puntos y la barra invertida al final (C:\, no C a secas, por ejemplo). Así para llamarla para el disco c:\ podría escribir: Dim Etiqueta As String Dim NumSerie As String Dim StmaArchs As String InfoVolumen "C:\", Etiqueta, NumSerie, StmaArchs Devolvería la etiqueta del volumen en la primera variable, el número de serie del volumen en la segunda y el tipo de sistema de archivos (NTFS, FAT, FAT32) en la tercera. José Manuel Alarcón Aguín

No comments: