博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
获取系统串口号
阅读量:6910 次
发布时间:2019-06-27

本文共 1416 字,大约阅读时间需要 4 分钟。

原来C++Builder6在XP下获取串口的方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void 
TTools::GetSystemPortList(TStringList * pList)
{
        
TRegistry *regkey=
new 
TRegistry();
        
pList->Clear();
        
regkey->RootKey=HKEY_LOCAL_MACHINE;
        
TStringList *KeyNames;
        
KeyNames=
new 
TStringList();
        
regkey->OpenKey(
"HARDWARE\\DEVICEMAP\\SERIALCOMM"
,
false
);
        
regkey->GetValueNames(KeyNames);
        
for
(
int 
i=0;i<=(KeyNames->Count-1);i++)
        
{
           
AnsiString a = regkey->ReadString(KeyNames->Strings[i]);
           
pList->Add(a);
        
}
        
        
regkey->CloseKey();
        
delete 
KeyNames;
        
delete 
regkey;
}

这种方法,编译好的程序,在Win10下无效,需要管理员权限执行才行.

在Win10直接用API读注册表获取,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
void 
TTools::GetSystemAllPort(TStringList * pList)
{
    
HKEY 
hKey;
    
DWORD 
result;
    
TCHAR 
valueName[255];
    
TCHAR 
data[255];
    
DWORD 
valueNameSize,dataSize;
    
DWORD 
i;
    
result = RegOpenKeyEx(HKEY_LOCAL_MACHINE, 
"Hardware\\DeviceMap\\SerialComm"
             
NULL, KEY_READ, &hKey);
//读取注册表串口信息
    
if
(ERROR_SUCCESS == result)
    
{
        
for
(i=0;i<256 ;i++)
        
{
            
valueNameSize = dataSize = 
sizeof
(valueName) / 
sizeof
(
TCHAR
);
            
result = RegEnumValue(hKey, i, valueName, &valueNameSize, NULL, NULL, 
                     
(
LPBYTE
)data, &dataSize);
            
if
(ERROR_NO_MORE_ITEMS == result )
            
{
                
break
;
            
}
            
else
            
{
               
pList->Add((
char
*)data);
            
}
        
}
    
}
    
else
    
{
        
::MessageBox(0,
"PORT ERROR!"
,
"Error"
,0);
    
}
    
RegCloseKey(hKey);
}
本文转自Chinayu201451CTO博客,原文链接: http://blog.51cto.com/9233403/2067175
,如需转载请自行联系原作者
你可能感兴趣的文章
Java B2B2C多用户商城 springcloud架构 - commonservice-eureka 项目构建过程(八)
查看>>
Apache Maven Compiler Plugin
查看>>
leetcode-852-山脉数组的峰顶索引
查看>>
EL表达式和JSTL标签快速入门
查看>>
微信小程序踩坑指南
查看>>
你了解HTTPS,但你可能不了解X.509
查看>>
SCRIPT1010: 缺少标识符 常见原因
查看>>
jquery里面获取div区块的宽度与高度
查看>>
Bootstrap 类解析
查看>>
查看MySQL是否在运行
查看>>
【转】从MVC到前后端分离
查看>>
七夕专场-A题
查看>>
JS----获取DOM元素的方法(8种)
查看>>
Android应用开发中三种常见的图片压缩方法
查看>>
项目总结12:bootstrap-select下拉框模糊搜索
查看>>
SCRUM 是一个用于开发和维护复杂产品的框架
查看>>
“完成”的定义
查看>>
62. ExtJS + fileuploadfield实现文件上传
查看>>
ThinkPHP/---普通传参
查看>>
计算机网络技术中的网络互连技术
查看>>