1这个函数是读注册表的
view source
01void FindCommPort(CComboBox *pComboBox )
02{
03 HKEY hKey;
04#ifdef _DEBUG
05 ASSERT( pComboBox != NULL );
06 pComboBox->AssertValid();
07#endif
08 if(::RegOpenKeyEx( HKEY_LOCAL_MACHINE,
09 "Hardware\\DeviceMap\\SerialComm",
10 NULL,
11 KEY_READ,
12 &hKey ) == ERROR_SUCCESS ) //打开串口注册表对应的键值
13 {
14 int i=0;
15 char portName[256],commName[256];
16 DWORD dwLong,dwSize;
17
18 while(1)
19 {
20 dwLong = dwSize = sizeof(portName);
21 if( ::RegEnumValue( hKey,
22 i,
23 portName,
24 &dwLong,
25 NULL,
26 NULL,
27 (PUCHAR)commName,
28 &dwSize ) == ERROR_NO_MORE_ITEMS )// 枚举串口
29 break;
30
31 pComboBox->AddString( commName ); // commName就是串口名字
32 i++;
33 }
34
35 if( pComboBox->GetCount() == 0 )
36 {
37 ::AfxMessageBox("在HKEY_LOCAL_MACHINE:Hardware\\DeviceMap\\SerialComm里找不到串口!!!");
38 }
39
40 RegCloseKey(hKey);
41 }
42}
编辑特别推荐: