如何在win7下,用vc实现自动获取当前可用的串口号?
这是我在网上找到的实现方法,这样做是否可以,我调试运行的时候,插上一个串口后,设备管理器上有显示是COM3,但是第一条打开注册表的函数,返回值一直是2,这说明没有打开注册表,怎么会这样了?如何实现自动获取当前计算机上的有效串口?
unsigned int CServoCtrlDlg::GetSerialPort()
{
HKEY hkey;
LONG lRes = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T( "HARDWARE\\DEVICEMAP\\SERIALCOMM "), NULL, KEY_READ, &hkey);
if (lRes == ERROR_SUCCESS)
{
TCHAR tchKey[MAX_PATH];
TCHAR tchValue[20];
DWORD dwIndex = 0;
DWORD dwType = REG_SZ;
for(; dwIndex <= 20 ; dwIndex++)
{
DWORD dwCount = MAX_PATH;
DWORD dwVCount = 20;
lRes = RegEnumValue(hkey, dwIndex, tchKey, &dwCount, NULL, &dwType, (LPBYTE)tchValue, &dwVCount);
if(lRes == ERROR_SUCCESS)
{
RegCloseKey(hkey);
return (dwIndex + 1);
}
}
}
AfxMessageBox("在HKEY_LOCAL_MACHINE:Hardware\\DeviceMap\\SerialComm里找不到串口!!!");
RegCloseKey(hkey);
return 0;
}