16,471
社区成员
发帖
与我相关
我的任务
分享
while(true)
{
Ret=RegEnumValue(hKey,i,szValueName,&dwBufsize,NULL,&dwType,
( unsigned char *)szValueKey,&dwKeysize);
if (Ret==ERROR_NO_MORE_ITEMS)
{
break;
}
strtemp.Format("%d",i);
m_listctrl.InsertItem(i,strtemp);
m_listctrl.SetItemText(i,1,szValueName);
m_listctrl.SetItemText(i,2,szValueKey);
i++;
memset(szValueKey,0,MAXBYTE);
memset(szValueName,0,MAXBYTE);
}
dwBufsize 和 dwKeysize 需要每次填值,因为返回时会被修改
//打开串口注册表
LONG result = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Hardware\\DeviceMap\\SerialComm"), NULL, KEY_READ, &hKey);
if (result == ERROR_SUCCESS)
{
DWORD dwPortName = 0;
DWORD dwComName = 0;
TCHAR cPortName[MAX_PATH];
TCHAR cComName[MAX_PATH];
DWORD dwIndex = 0;
CString strComName = _T("");
while(1)
{
ZeroMemory(cPortName, MAX_PATH);
ZeroMemory(cComName, MAX_PATH);
dwPortName = MAX_PATH;
dwComName = MAX_PATH;
if (::RegEnumValue(hKey, dwIndex, cPortName, &dwPortName, NULL, NULL, (LPBYTE)cComName, &dwComName) == ERROR_NO_MORE_ITEMS)
{
break;
}
strComName.Format(_T("%s"), cComName);
pComBox->AddItem(cComName);
dwIndex++;
}
RegCloseKey(hKey);
}