|
|
|
|
|
Dicas
|
|
Visual Basic (Arquivos/Diretórios)
|
|
|
Título da Dica: Múltiplas informação de unidades!
|
|
|
|
Postada em 27/11/2003 por [_Chuck_]
Essa class obtém informação de capacidade, FAT, rótulo, tipo de unidade e etc.. Coloque esse código em uma class para sua melhor utilização!
Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long 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 Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" (ByVal lpRootPathName As String, lpFreeBytesAvailableToCaller As Currency, lpTotalNumberOfBytes As Currency, lpTotalNumberOfFreeBytes As Currency) As Long
Public Enum PD_Medida [Bytes] [KBytes] [MBytes] [GBytes] End Enum Public Enum TP_DRV [DiscoRemovivel] [DicoFixo] [DiscoRemoto] [CDRom] [RAMDisco] End Enum Public Enum TP_LISTA [ListaTodos] [ListaDiscoRemovivel] [ListaDicoFixo] [ListaDiscoRemoto] [ListaCDRom] [ListaRAMDisco] End Enum Public Function TipoUnidade(Unidade As String, TPDisco As TP_DRV) As Boolean Dim GTDVTP As Long GTDVTP = GetDriveType(Unidade) If GTDVTP = 2 And TPDisco = DiscoRemovivel Then TipoUnidade = True ElseIf GTDVTP = 3 And TPDisco = DicoFixo Then TipoUnidade = True ElseIf GTDVTP = 4 And TPDisco = DiscoRemoto Then TipoUnidade = True ElseIf GTDVTP = 5 And TPDisco = CDRom Then TipoUnidade = True ElseIf GTDVTP = 6 And TPDisco = RAMDisco Then TipoUnidade = True Else TipoUnidade = False End If End Function Public Sub InformacaoUnidade(Unidade As String, Rotulo As String, FAT As String, NumeroSerial As String) Dim USerial As Long, UNome As String, UFAT As String UNome = String$(255, Chr$(0)) UFAT = String$(255, Chr$(0)) GetVolumeInformation Unidade, UNome, 255, USerial, 0, 0, UFAT, 255 Rotulo = Left$(UNome, InStr(1, UNome, Chr$(0)) - 1) NumeroSerial = USerial FAT = Left$(UFAT, InStr(1, UFAT, Chr$(0)) - 1) End Sub Public Sub ContadorUnidade(TipoLista As TP_LISTA, Lista As ListBox) Dim Valor As String Valor = String(255, Chr$(0)) GetLogicalDriveStrings 255, Valor For X = 1 To 200 If Left$(Valor, InStr(1, Valor, Chr$(0))) = Chr$(0) Then Exit For If TipoLista = 0 Then Lista.AddItem Left$(Valor, InStr(1, Valor, Chr$(0)) - 1) Else If GetDriveType(Left$(Valor, InStr(1, Valor, Chr$(0)) - 1)) = TipoLista + 1 Then Lista.AddItem Left$(Valor, InStr(1, Valor, Chr$(0)) - 1) End If End If Valor = Right$(Valor, Len(Valor) - InStr(1, Valor, Chr$(0))) Next X End Sub Public Sub InformacaoEspacoDisco(Unidade As String, PadraoMedida As PD_Medida, TotalEspaco As String, TotalEspacoLivre As String, TotalEspacoUsado As String) Dim TBL As Currency, TB As Currency GetDiskFreeSpaceEx Unidade, 0, TB, TBL Select Case PadraoMedida Case 0 TotalEspaco = Format$(TB * 10000, "###,###,###,##0") TotalEspacoLivre = Format$(TBL * 10000, "###,###,###,##0") TotalEspacoUsado = Format$((TB - TBL) * 10000, "###,###,###,##0") Case 1 TotalEspaco = Format$((TB * 10000) / 1024, "##.000") TotalEspacoLivre = Format$((TBL * 10000) / 1024, "##.000") TotalEspacoUsado = Format$(((TB - TBL) * 10000) / 1024, "##.000") Case 2 TotalEspaco = Format$((TB * 10000) / 1024 / 1024, "##.000") TotalEspacoLivre = Format$((TBL * 10000) / 1024 / 1024, "##.000") TotalEspacoUsado = Format$(((TB - TBL) * 10000) / 1024 / 1024, "##.000") Case 3 TotalEspaco = Format$((TB * 10000) / 1024 / 1024 / 1024, "##.000") TotalEspacoLivre = Format$((TBL * 10000) / 1024 / 1024 / 1024, "##.000") TotalEspacoUsado = Format$(((TB - TBL) * 10000) / 1024 / 1024 / 1024, "##.000") End Select End Sub
|
|
|
|
|