通过查询计算机注册表的方式获取计算机上安装的可用串口,并将串口放入ComboBox控件中
VC++直接复制函数到自己工程中即可,无需任何改动(VS08中已验证,很好用)
--------------------------------------------------------------------------------------------------------------
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); } }