DRIVELISTBOX VIA CODIGO

USUARIO.EXCLUIDOS 20/08/2007 08:32:52
#231612
Olá. Alguém sabe como consigo criar um DriveListBox via código? sem ser baseado em um já existente?
MJAC 20/08/2007 13:05:02
#231649
Resposta escolhida
Claro amigo, usando API, em um Form desenhe um botão e a área de código cole isso:


Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

Private Const DRIVE_Unknown = 0 'Desconhecido
Private Const DRIVE_NoExists = 1 'Não existe
Private Const DRIVE_REMOVABLE = 2 'Removível
Private Const DRIVE_FIXED = 3 'Fixo
Private Const DRIVE_REMOTE = 4 'Rede
Private Const DRIVE_CDROM = 5 'CDRom
Private Const DRIVE_RAMDISK = 6 'Memória

[c]Private Sub Command1_Click()
Dim Drive As Integer, Nomes As String
Nomes = vbNullString
For Drive = 65 To 90
If GetDriveType(Chr(Drive) & ":\") > 1 Then
Nomes = Nomes & vbCrLf & Chr(Drive) & ":\"
End If
Next Drive
MsgBox "Os Drives existentes são:" & vbCrLf & Nomes
End Sub

[/c]

Se desejar separar por tipo, apenas compare GetDriveType com as constantes relatadas em cima. Abraços...
MJAC 20/08/2007 13:07:54
#231650
Ops tem um [c] a mais ali que o próprio site colocou... tire isso para não gerar erro... Abraços
USUARIO.EXCLUIDOS 20/08/2007 17:30:43
#231712
'adicione um commandbotton e um listbox

Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

Private Sub Command1_Click()
Dim drvs As String * 260 'cria um buffer de 260 chrs nulos
GetLogicalDriveStrings Len(drvs), drvs 'coloca no drvs os drivers locais.
v = Split(drvs, Chr(0)) 'cria um split em cada chr(0)
'ex: c:\0d:\0e:\0000000000000

For i = 0 To UBound(v) 'para cada chr 0 no split v
If Not v(i) = "" Then List1.AddItem v(i) 'se não for nulo adiciona ao listbox
Next
End Sub


'
Tópico encerrado , respostas não são mais permitidas