我想知道当前系统能用的串口
用SetupDiGetDeviceRegistryProperty 来得到信息
但是 如果参数是SPDRP_FRIENDLYNAME
可以得到 “通讯端口(com1)”的字样 有没有办法直接得到 com1 或com2 类似的?
用SetupDiGetDeviceRegistryProperty 来得到信息
但是 如果参数是SPDRP_FRIENDLYNAME
可以得到 “通讯端口(com1)”的字样 有没有办法直接得到 com1 或com2 类似的?
解决方案 »
- 一个关于stack overflow的奇怪问题,
- 有c/c++、vc方面知识基础(一直没有停止学习),但是没有这方面的项目开发工作经验,想转入c/c++、vc方面的开发工作,我该如何做?请已经从事这方面的朋友给点建议!本人有过一年多的pb开发工作经历。
- 帮忙解释一下这个结果
- 如何获取剪切板内的东西是剪切的还是复制的?
- 菜鸟有礼了,菜鸟刚学vc,有几个难点想问问高手.....
- 一个非常棘手的问题,求求各位了!是关于字符转换的!求求各位大侠!
- 新手疑问:创建窗口扩展函数CreateWindowEx()是干什么用的?
- Windows下如何对串口进行检测
- 困惑我很长时间的问题,如果向对话框编辑器一样可以在视上拖动控件!!!
- 如何将非DLL模块转化为DLL,请各位高手出出主意.
- 不小心把VC6的界面搞乱了 怎么恢复默认设置?
- 如何取得listctrl的列名
int nCom = 0;
int count = 0;
HANDLE hCom;
do {
nCom++;
strCom.Format("COM%d", nCom);
hCom = CreateFile(strCom, 0, 0, 0,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if(INVALID_HANDLE_VALUE == hCom )
break;
count++;
CloseHandle(hCom);
} while(1);
Win2k/XP和Win98/Me的注册表值不同,所以用枚举
把串口名字写入一个ComboBox控件里
*/
void FindCommPort( CComboBox *pComboBox )
{
HKEY hKey;#ifdef _DEBUG
ASSERT( pComboBox != NULL );
pComboBox->AssertValid();
#endif if( ::RegOpenKeyEx( HKEY_LOCAL_MACHINE,
"Hardware\\DeviceMap\\SerialComm",
NULL,
KEY_READ,
&hKey ) == ERROR_SUCCESS ) // 打开串口注册表
{
int i=0;
char portName[256],commName[256];
DWORD dwLong,dwSize; while(1)
{
dwLong = dwSize = sizeof(portName);
if( ::RegEnumValue( hKey,
i,
portName,
&dwLong,
NULL,
NULL,
(PUCHAR)commName,
&dwSize ) == ERROR_NO_MORE_ITEMS ) // 枚举串口
break; pComboBox->AddString( commName ); // commName就是串口名字
i++;
} if( pComboBox->GetCount() == 0 )
{
::AfxMessageBox( "在HKEY_LOCAL_MACHINE:Hardware\\DeviceMap\\SerialComm里找不到串口!!!" );
} RegCloseKey(hKey);
}
}