Option Explicit
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByRef lpData As Any, ByRef lpcbData As Long) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, ByRef phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Const HKEY_LOCAL_MACHINE As Long = &H80000002
part1
STM32 Virtual COM Port所在的注册表地址。
注:STM32 Virtual COM Port的地址是不会因为USB拔插而消失,是一直存在的地址。
Private Sub Command3_Click()
Dim hKey As Long, ret As Long, Name As String, Idx As Long
Dim tempName As String
Name = String(256, Chr(0))
ret = RegOpenKey(HKEY_LOCAL_MACHINE, "SYSTEM\CurrentControlSet\Enum\USB\Vid_0483&Pid_5740\Demo_1.000", hKey) '引号内容为目标注册表地址
If ret = 0 Then
ret = RegQueryValueEx(hKey, "DeviceDesc", 0, 1, ByVal Name, Len(Name))
RegCloseKey hKey
MsgBox Name
Else
MsgBox "没有这个项"
End If
Text1.Text = Name
Combo1.Text = Name'这里可以让COMBO显示STM32
End Sub
'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\Vid_0483&Pid_5740\Demo_1.000
PART2
COM口所在的地址。
注:会因为USB拔插而消失/存在。
Private Sub Command4_Click()
Dim hKey As Long, ret As Long, Name As String, Idx As Long
Dim tempName As String
Name = String(256, Chr(0))
ret = RegOpenKey(HKEY_LOCAL_MACHINE, "HARDWARE\DEVICEMAP\SERIALCOMM", hKey)
If ret = 0 Then
ret = RegQueryValueEx(hKey, "\Device\USBSER000", 0, 1, ByVal Name, Len(Name))
RegCloseKey hKey
MsgBox Name
Else
MsgBox "没有这个项"
End If
Combo1.Text = Name <span style="font-family: Arial, Helvetica, sans-serif;">'这里可以让COMBO显示COM</span>
End Sub