关于获取串口号和在Combox下拉列表中显示问题

yuwenbpya 2011-08-03 08:45:32
这是我再网上找的一段获取串口号的代码,执行后在Combox下拉列表中总有Com3,但实际并没有这个口。高手麻烦指点下

int CKZB7Dlg::Getcom()
{
int reg;

// CStringArray strCommArr;
HKEY hKey;
int rtn;
//m_cmbComm.ResetContent();
rtn = RegOpenKeyEx( HKEY_LOCAL_MACHINE, "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, portName, &dwLong,
NULL, NULL, (PUCHAR)commName, &dwSize );

if( rtn == ERROR_NO_MORE_ITEMS ) // 枚举串口
{
break;
}
// strCommArr.Add(commName);
m_memoCOM.AddString(commName);
i++;
}
reg=i;
}
RegCloseKey(hKey);
return reg;
}
...全文
631 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2012-01-14
  • 打赏
  • 举报
回复
内部串口
这个值是固定的
自己在添加下拉列表的时候排除掉他就可以了
hhyhw2001 2012-01-14
  • 打赏
  • 举报
回复
在这句rtn = RegEnumValue( hKey, i, portName, &dwLong, NULL, NULL, (PUCHAR)commName, &dwSize ); 前加上:

ZeroMemory(portName, sizeof(portName));
ZeroMemory(commName, sizeof(commName));

c3201070103 2012-01-13
  • 打赏
  • 举报
回复
您好,可以把你以前调试过的获取串口号并且在Combox里面显示出来的源程序发给我一下嘛??谢谢~我的邮箱:342928315@qq.com
yuwenbpya 2011-08-05
  • 打赏
  • 举报
回复
在m_memoCOM.AddString(commName);这前面先执行了m_comselect.ResetContent();
,就好了,谢谢楼上的
zgl7903 2011-08-05
  • 打赏
  • 举报
回复
有调制解调器吧 禁用了试试
hill8006 2011-08-05
  • 打赏
  • 举报
回复
注册表中就有这一项!所以就有com3了

用户 昵称 2011-08-03
  • 打赏
  • 举报
回复
//***********************
// 枚举所有的串口,以及名称
//***********************
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 );
}
  • 打赏
  • 举报
回复
你调试跟踪一下 不就知道了

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧