La Web del Programador: Comunidad de Programadores
 
    Pregunta:  51163 - DETECTAR SI UNA UNIDAD USB (PEN DRIVE) A SIDO CONECTADA
Autor:  José Quintana
Para un proyecto de VB 6 necesito saber que letra asignará la computadora al Pen Drive, si está conectado o no, para poder copiar algunos archivos en el mismo. Gracias de antemano por la ayuda.

  Respuesta:  Roberto ROGERS
Te agradezco la rutina, me sirvió de 10. Lo único que tuve que cambiar fué todos los 2 por 3.

  Respuesta:  José L Quintana
Hice estas dos Funciones que, aunque no es exactamente lo que deseaba, me sirve para el proyecto en cuestión. La comparto con Uds. para que sea mejorada.

'Declaración:
Declare Function GetDriveType Lib "kernel32" Alias _
"GetDriveTypeA" (ByVal nDrive As String) As Long

Function PenExists() As Boolean
Dim NumDisco As Integer
Dim StrDisco As String
Dim ret As Long
Dim sTipos(0 To 6) As String

' Para los valores de retorno de GetDriveType (32bits)
sTipos(0) = " No Instalado"
sTipos(1) = " No Instalado"
sTipos(2) = " Extraible"
sTipos(3) = " Fijo"
sTipos(4) = " Remoto"
sTipos(5) = " CDROM"
sTipos(6) = " RAMDISK"

PenExists = False

For NumDisco = 0 To 25
StrDisco = Chr(NumDisco + 65) & ":\"

If NumDisco = 0 Then
ret = GetDriveType(StrDisco)
ElseIf NumDisco > 0 And GetDriveType(StrDisco) = 2 Then
ret = 7
PenExists = True
ElseIf NumDisco > 0 And GetDriveType(StrDisco) <> 2 Then
ret = GetDriveType(StrDisco)
End If
Next

End Function

Function PenLetra() As String
Dim NumDisco As Integer
Dim StrDisco As String
Dim ret As Long

PenLetra = ""

For NumDisco = 0 To 25
StrDisco = Chr(NumDisco + 65) & ":\"

If NumDisco = 0 Then
ret = GetDriveType(StrDisco)
ElseIf NumDisco > 0 And GetDriveType(StrDisco) = 2 Then
PenLetra = StrDisco
ElseIf NumDisco > 0 And GetDriveType(StrDisco) <> 2 Then
ret = GetDriveType(StrDisco)
End If
Next
End Function

'uso:

If PenExists=True then
txtText1.Text = PenLetra
End If

Agradezco los e-Mail y las posibles respuestas Saludos