void CGPSDlg::EnumPort(CComboBox * CmboBoxPort)
{
HKEY hKey = NULL;
long lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Hardware\\DeviceMap\\SerialComm",0,KEY_READ,&hKey); //打开注册表
if( lRet != ERROR_SUCCESS )
{
MessageBox("无法找到串口!");
return;
}
DWORD i = 0; //键值序号
char cValueName[_MAX_PATH]; //键值名称
DWORD nValueNameSize = _MAX_PATH; //键值名称长度
DWORD ValueType; //键值类型
BYTE bValueData[_MAX_PATH]; //键值数值
DWORD nValueDataSize = _MAX_PATH; //键值数值长度
do
{
DWORD nValueNameSize = _MAX_PATH; //重置键值名称长度
DWORD nValueDataSize = _MAX_PATH; //重置键值数值长度
lRet = RegEnumValue(hKey, i, cValueName, &nValueNameSize, 0, &ValueType, bValueData, &nValueDataSize); //枚举键值
if(lRet == ERROR_SUCCESS)
{
CmboBoxPort->AddString((LPCTSTR)bValueData); //将串口号添加至组合框的列表中
}
i++;
}while(lRet == ERROR_SUCCESS); //读取完毕后退出循环
}
将得到的系统串口添加至组合框中