Si se puede hacer en VB. Aqui tienes un code, no se realmente para que es pero el caso es que usa el puerto USB y es en VB... si consigues entenderlo o adaptarlo a tu programa, habras resuelto tu problema. Este código NO es mio y tan solo es orientativo, ya que como he dicho no estoy seguro de su funcionamiento rea
En un modulo
Public Declare Function CloseHandle Lib "kernel32" ( _
ByVal hObject As Long) As Long
Public Declare Function DeviceIoControl Lib "kernel32" ( _
ByVal hDevice As Long, _
ByVal dwIoControlCode As Long, _
lpInBuffer As Any, _
ByVal nInBufferSize As Long, _
lpOutBuffer As Any, _
ByVal nOutBufferSize As Long, _
lpBytesReturned As Long, _
lpOverlapped As OVERLAPPED) As Long
Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" ( _
ByVal lpFileName As String, _
ByVal dwDesiredAccess As Long, _
ByVal dwShareMode As Long, _
lpSecurityAttributes As SECURITY_ATTRIBUTES, _
ByVal dwCreationDisposition As Long, _
ByVal dwFlagsAndAttributes As Long, _
ByVal hTemplateFile As Long) As Long
' WINAPI - Typen
Public Type USBName
USBLenght As Long
GUID(256) As Byte
End Type
Public Type OVERLAPPED
ternal As Long
ternalHigh As Long
offset As Long
OffsetHigh As Long
hEvent As Long
End Type
Public Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type
' WINAPI - Valores de las constantes
Public Const OPEN_EXISTING = 3
Public Const GENERIC_READ = &H80000000
Public Const GENERIC_WRITE = &H40000000
Public Const FILE_SHARE_READ = &H1
Public Const FILE_SHARE_WRITE = &H2
En un formulario (para probarlo)
Private Const USB_ROOT_HUB = &H220408
Private Const USB_HOSTCONTROLLER = &H220424
Private Sub Form_Load()
Dim hFile As Long
Dim sHostName As String
Dim Sa As SECURITY_ATTRIBUTES
Dim ov As OVERLAPPED
Dim i As Long
Dim ii As Long
Dim nFlags As Long
Dim nShare As Long
Dim USB As USBName
Dim RetByte As Long
Dim rVal As Long
nFlags = GENERIC_READ Or GENERIC_WRITE
nShare = FILE_SHARE_READ Or FILE_SHARE_WRITE
For i = 0 To 3
sHostName = "\\.\HCD" & CStr(i)
hFile = CreateFile(sHostName, nFlags, nShare, Sa, OPEN_EXISTING, 0, 0)
If hFile > 0 Then
sHostName = ""
If DeviceIoControl(hFile, USB_ROOT_HUB, 0, 0, USB, Len(USB), RetByte, ov) Then
rVal = DeviceIoControl(hFile, USB_ROOT_HUB, USB, USB.USBLenght, USB, USB.USBLenght, RetByte, ov)
If rVal Then
For ii = 0 To RetByte Step 2
sHostName = sHostName + Chr(USB.GUID(ii))
Next
MsgBox sHostName
End If
End If
CloseHandle hFile
End If
Next
End Sub