读书人

获取计算机串口号解决办法

发布时间: 2012-05-12 15:39:31 作者: rapoo

获取计算机串口号
我现在MFC界面上加一个选择串口号的小按钮,
这个按钮的可选项是计算机本来就有的串口号,
而不是实现已经在程序里定义的串口号~~~

[解决办法]

C/C++ code
/* -------- 从注册表里搜寻安装的串口 -----------------------Win2k/XP和Win98/Me的注册表值不同,所以用枚举把串口名字写入一个ComboBox控件里*/void FindCommPort(CComboBox *pComboBox ){    HKEY hKey;#ifdef _DEBUG    ASSERT( pComboBox != NULL );    pComboBox->AssertValid();#endif    if( ::RegOpenKeyEx( HKEY_LOCAL_MACHINE,        "Hardware\\DeviceMap\\SerialComm",        NULL,        KEY_READ,        &hKey) == ERROR_SUCCESS) // 打开串口注册表    {        int i=0;        char portName[256],commName[256];        DWORD dwLong,dwSize;        while(1)        {            dwLong = dwSize = sizeof(portName);            if( ::RegEnumValue( hKey,                i,                portName,                &dwLong,                NULL,                NULL,                (PUCHAR)commName,                &dwSize ) == ERROR_NO_MORE_ITEMS ) // 枚举串口                break;            pComboBox->AddString( commName ); // commName就是串口名字            i++;        }        if( pComboBox->GetCount() == 0 )        {            ::AfxMessageBox("在HKEY_LOCAL_MACHINE:Hardware\\DeviceMap\\SerialComm里找不到串口!!!" );        }        RegCloseKey(hKey);    }} 

读书人网 >VC/MFC

热点推荐