函数可直接调用,记得先在头文件中声明。
// 查找计算机可用串口并将串口号设置到Combo Box控件上
void Cxxxxxxxxx::FindCommPort( CComboBox *pComboBox )
{
HKEY hKey;
#ifdef _DEBUG
ASSERT( pComboBox != NULL );
pComboBox->AssertValid();
#endif
LONG nRetVal = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"Hardware\\DeviceMap\\SerialComm", NULL,
KEY_READ, &hKey);
if ( nRetVal == ERROR_SUCCESS )
{
int i = 0;
char portName[256], commName[256];
DWORD dwLong, dwSize;
while ( 1 )
{
dwLong = dwSize = sizeof(portName);
nRetVal = RegEnumValue(hKey, i, portName, &dwLong, NULL, NULL, (PUCHAR)commName, &dwSize);
if( nRetVal == ERROR_NO_MORE_ITEMS ) // 枚举串口
break;
CString strCommName;
strCommName.Format("%s", commName);
strCommName += _T("(可用)");
pComboBox->AddString( strCommName ); // commName:串口名字
i++;
}
if( pComboBox->GetCount() == 0 )
{
AfxMessageBox("[HKEY_LOCAL_MACHINE:Hardware\\DeviceMap\\SerialComm]里无串口!" );
}
RegCloseKey(hKey);
}
}