如何获得本机上可用的串口信息,包括串口的编号,例如:COM1、COM3等等。请各位大侠指教!谢谢!

解决方案 »

  1.   

    你可以使用Microsoft Common Control 6.0控件!
      

  2.   

    Public Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hkey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
    Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hkey As Long) As Long
    Public Declare Function RegEnumValueAsAny Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hkey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
    Public Declare Function ExpandEnvironmentStrings Lib "kernel32" Alias "ExpandEnvironmentStringsA" (ByVal lpSrc As String, ByVal lpDst As String, ByVal nSize As Long) As LongPublic Const HKEY_CLASSES_ROOT = &H80000000
    Public Const HKEY_CURRENT_CONFIG = &H80000005
    Public Const HKEY_CURRENT_USER = &H80000001
    Public Const HKEY_LOCAL_MACHINE = &H80000002
    Public Const HKEY_USERS = &H80000003Public Const REG_BINARY = 3
    Public Const REG_DWORD = 4
    Public Const REG_NONE = 0
    Public Const REG_SZ = 1
    Public Const REG_EXPAND_SZ = 2
    Public Const REG_DWORD_BIG_ENDIAN = 5
    Public Const REG_MULTI_SZ = 7Public Const READ_CONTROL = &H20000
    Public Const KEY_QUERY_VALUE = &H1
    Public Const KEY_SET_VALUE = &H2
    Public Const KEY_CREATE_SUB_KEY = &H4
    Public Const KEY_ENUMERATE_SUB_KEYS = &H8
    Public Const KEY_NOTIFY = &H10
    Public Const KEY_CREATE_LINK = &H20
    Public Const KEY_ALL_ACCESS = KEY_QUERY_VALUE + KEY_SET_VALUE + KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL
    Dim lKey As StringPublic Function Read_Reg()
    Dim hkey As Long
    Dim ret As Long
    Dim lenData As Long
    Dim typeData As Long
    Dim Name As String
    Dim lenName As Long
    Dim idx As Long
    Dim tName As String * 256
    Dim cKey As Long
    Dim sKey As String
    Dim SSS As String
    SSS = "#"
    cKey = &H80000002
    sKey = "HARDWARE\DEVICEMAP\SERIALCOMM"
    ret = RegOpenKeyEx(cKey, sKey, 0, KEY_ALL_ACCESS, hkey)
    If ret <> 0 Then Exit Function
    ret = 0
    idx = 0
    While ret = 0
        lenName = 256
        ret = RegEnumValueAsAny(hkey, idx, tName, lenName, ByVal 0, typeData, ByVal vbNullString, lenData)
        If ret <> 0 Then
            RegCloseKey hkey
            Read_Reg = SSS
            Exit Function
        End If
        Name = String(lenName + 1, Chr(0))
        lenName = Len(Name)
        If typeData = REG_SZ Then
            Dim S As String
            S = String(lenData, Chr(0))
            RegEnumValueAsAny hkey, idx, Name, lenName, ByVal 0, typeData, ByVal S, lenData
            S = Left(S, InStr(S, Chr(0)) - 1)
            SSS = SSS + S + "#"
            'SSS = SSS + IIf(lenName = 0, "(默认)", Left(Name, InStr(Name, Chr(0)) - 1)) & " = " & S & vbCrLf
        End If
        idx = idx + 1
    Wend
    RegCloseKey hkey
    Read_Reg = SSS
    End Function
      

  3.   

    用串口查询控件这里下载
    http://www.refound.net/download/soft.asp?id=25