思路這樣:
計算機的串口存儲在註冊表中,所以只要對註冊表進行讀取就可以了。
註冊表的位置:HKEY_LOCAL_MACHINE\\Hardware\\DeviceMap\\SerialComm
我的電腦裏所有的串口(如下圖)
參考代碼(開發環境:vc9.0)
HKEY?hKey;?int?rtn;
rtn=RegOpenKeyEx(HKEY_LOCAL_MACHINE,L"Hardware\\DeviceMap\\SerialComm",NULL,KEY_READ,&hKey);//打開串口註冊表 if(rtn==ERROR_SUCCESS) { int?i=0; char?portName[256],commName[256]; DWORD?dwLong,dwSize; while(1) {dwSize=sizeof(portName);
dwLong=dwSize;
rtn=RegEnumValue(hKey,i,(LPWSTR)portName,&dwLong,NULL,NULL,(PUCHAR)commName,&dwSize);
if(rtn==ERROR_NO_MORE_ITEMS)//枚舉串口
{
break;
}
else
{
Combo_ChooseComPort.AddString((LPCTSTR)commName);
i++;
}
} RegCloseKey(hKey);?}