要编程自动获取电脑上所有的串口号,并显示com几,应该用到哪部分的内容?

解决方案 »

  1.   

    //***********************
    // 枚举所有的串口,以及名称
    //***********************
    int
    EnumAllComm( TCHAR *buf )
    {
        HKEY hkey;  
        int result;
    int i = 0; *buf = 0;    result = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
    _T( "Hardware\\DeviceMap\\SerialComm" ),
    NULL,
    KEY_READ,
    &hkey ); if( ERROR_SUCCESS == result )   //   打开串口注册表   
    {   
    TCHAR portName[ 0x100 ], commName[ 0x100 ];
    DWORD dwLong, dwSize; do
    {   
    dwSize = sizeof( portName ) / sizeof( TCHAR );
    dwLong = dwSize;
    result = RegEnumValue( hkey, i, portName, &dwLong, NULL, NULL, ( LPBYTE )commName, &dwSize );
    if( ERROR_NO_MORE_ITEMS == result )
    {
    //   枚举串口
    break;   //   commName就是串口名字
    }
    _tcscpy( buf, commName );
    buf += ( _tcslen( buf ) + 1 );
    i++;   
    } while ( 1 ); RegCloseKey( hkey );   
    }   *buf = 0; return i;
    }