2,640
社区成员
发帖
与我相关
我的任务
分享
//***********************
// 枚举所有的串口,以及名称
//***********************
int
EnumAllComm( TCHAR *buf )
{
HKEY hkey;
int result;
int i = 0;
*buf = 0;
result = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
_T( "Hardware\\DeviceMap\\SerialComm" ),
NULL,
KEY_READ,
&hkey );
if( ERROR_SUCCESS == result ) // 打开串口注册表
{
TCHAR portName[ 0x100 ], commName[ 0x100 ];
DWORD dwLong, dwSize;
do
{
dwSize = sizeof( portName ) / sizeof( TCHAR );
dwLong = dwSize;
result = RegEnumValue( hkey, i, portName, &dwLong, NULL, NULL, ( LPBYTE )commName, &dwSize );
if( ERROR_NO_MORE_ITEMS == result )
{
// 枚举串口
break; // commName就是串口名字
}
_tcscpy( buf, commName );
buf += ( _tcslen( buf ) + 1 );
i++;
} while ( 1 );
RegCloseKey( hkey );
}
*buf = 0;
return i;
}
// 使用
m_comselect.ResetContent();
comcount = EnumAllComm( comname );
p = comname;
while( *p )
{
m_comselect.AddString( p );
p += ( _tcslen( p ) + 1 );
}