【C++】Windows 读取注册表方法获取串口设备信息
文章目录
- 前言
- 代码在这里:
- 使用
- 查找注册表键值对
- 得到串口设备列表
- 注意:
前言
这些名字是凭感觉取的,没有专门学过Windows API。以前用Qt读写串口 挺方便的,但是现在要不依赖于Qt读写串口,遇到查找串口的问题,所以操作了封装了一下。
代码在这里:
github:
git clone https://github.com/MisakaMikoto128/WinRegister.git
网盘:http://liuyuanlin.xyz:666/#s/6LnvBrVg
头文件
#pragma once
#define SERIALPATH _T("Hardware\\DeviceMap\\SerialComm")void wcharTochar(const wchar_t* wcharSrc, char* chrDst, int chrDstlength);
bool QueryRegKey(LPCWSTR keyPath, LPCWSTR ValueName, char* Value, int valueLength);
vector<string> QuerySerialPort();
使用
查找注册表键值对
_T
等同于TEXT
, _T("")
是一个宏,定义于tchar.h下。因为Windows使用两种字符集ANSI和UNICODE,如果你编译一个程序为ANSI方式,_T实际不起任何作用。
而如果编译一个程序为UNICODE
方式,则编译器会把_T("Hello")
字符串以UNICODE方式保存。_T和_L的区别在于,_L不管你是以什么方式编译,一律以UNICODE方式保存。
L是表示字符串资源为Unicode的。
#include "WinReg.h"
int main()
{LPCWSTR keyPath = SERIALPATH;LPCWSTR ValueName = _T("\\Device\\Serial2");char Value[MAX_PATH];int valueLength = MAX_PATH;if(QueryRegKey(keyPath, ValueName , Value, valueLength))printf("query success : %s!\n", Value);return 0;
}
得到串口设备列表
对比注册表符合。
#include "WinReg.h"
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int main()
{vector<string> COMList = QuerySerialPort();for(string& var : COMList){cout << var << endl;}return 0;
}
注意:
字符集默认只 支持Unicode
其他:
RegQueryValueEx函数默认第5个类型是,LPBYTE,若定义选择此,输入将只有一个字母C
参考:
[1] 串口编程-枚举遍历串口、获取PC所有串口名称、遍历注册表项、RegEnumValue用法
[2] 微软官方文档
[3] C++ 读取windows注册表 值
[4] 百度百科._T
【C++】Windows 读取注册表方法获取串口设备信息相关推荐
- 求助:Windows Service 读取注册表键值
最近项目需要程序监控记录用户使用和打开的文件,于是做了一个使用Windows Service监控Recent文件夹中文件增加和更改的程序, 但是需要在服务程序确定Recent文件夹的路径,使用Regi ...
- c 语言读取注册表信息,C++读取注册表的实现方法
C++读取注册表 GetRegValue.h: #ifndef __GETREGVALUE_H__ #define __GETREGVALUE_H__ #include //------------- ...
- python访问注册表_python读取注册表中值的方法
在python的标准库中,_winreg.pyd可以操作windows的注册表,另外第三方的win32库封装了大量的windows api,使用起来也很方便.不过这里介绍的是使用_winreg操作注册 ...
- windows清理_快速清理Windows垃圾和注册表方法
电脑用久了难免会产生很多windows垃圾,跟注册表的一些垃圾无用文件.那么这些垃圾是看着很碍眼的,也给电脑内存造成一定的负担.那么要怎样才能快速的清理Windows垃圾和注册表让我们的电脑看起来更加 ...
- JAVA读取注册表中的值
需求:java动态读取注册表来调用第三方应用程序(如:qq.微信.网易云音乐等)启动,为什么说动态呢,因为使用绝对路径,每个人的电脑安装的路径并不一定相同,但注册表中的路径一般都相同,所以只要获取注册 ...
- 认识Windows XP注册表
认识Windows XP注册表 1.概述 Windows XP注册表实际上是一个庞大的数据库,这个数据库记录了机器软硬件环境的各种信息,对操作系统及应用程序的正常运行至关重要.具体来讲,此数据库包含了 ...
- JavaScript读取注册表
代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. ...
- 如何查看windows的注册表
如何查看注册表 开始-运行-输入regedit回车即可 ==============================什么是注册表? 注册表因为它复杂的结构和没有任何联系的CLSID键使得它可能看上去很 ...
- qsettings删除注册表_Qt QSettings读取注册表和ini | 学步园
1.读取注册表,以读取已经安装的软件为例. 已经安装的软件信息的注册表位置: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ ...
最新文章
- pythonasyncio在哪个版本好_理解Python asyncio的简洁方式
- 为什么线粒体DNA突变率高?
- 描述最常用的5种http方法的用途_对不起,来晚了,这可能是设计模式讲的最通俗易懂的文章(收藏)
- shell 字符串分割
- Hive启动报错org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeE...
- php生日验证,PHP验证生日
- 将serversocket 写在按钮事件中连接不上_看 Netty 在 Dubbo 中如何应用
- 卸载loadrunner
- 牛腩新闻发布系统 (6) 在线浮动的客服功能
- Intro to Xamarin.Android Xamarin Android入门教程 Lynda课程中文字幕
- 小米 android 7.0下载地址,小米5安卓7.0公测版固件下载地址 仅限开发版
- fedora 19 安装中文语言包
- linux 终端使用aplay播放wav
- BGP 自动路由聚合
- 【口诀】巧记泰勒公式
- 我的VSTO之路(三):Word基本知识
- 微信小程序自定义生成动态分享内容
- python代码手机壁纸_Python制作微信好友背景墙教程(附完整代码)
- 学法普法知识宣传教育答题小程序功能设计
- 电脑C盘满了怎么办?教您3招快速释放C盘空间