文章目录

  • 前言
    • 代码在这里:
  • 使用
    • 查找注册表键值对
    • 得到串口设备列表
    • 注意:

前言

这些名字是凭感觉取的,没有专门学过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 读取注册表方法获取串口设备信息相关推荐

  1. 求助:Windows Service 读取注册表键值

    最近项目需要程序监控记录用户使用和打开的文件,于是做了一个使用Windows Service监控Recent文件夹中文件增加和更改的程序, 但是需要在服务程序确定Recent文件夹的路径,使用Regi ...

  2. c 语言读取注册表信息,C++读取注册表的实现方法

    C++读取注册表 GetRegValue.h: #ifndef __GETREGVALUE_H__ #define __GETREGVALUE_H__ #include //------------- ...

  3. python访问注册表_python读取注册表中值的方法

    在python的标准库中,_winreg.pyd可以操作windows的注册表,另外第三方的win32库封装了大量的windows api,使用起来也很方便.不过这里介绍的是使用_winreg操作注册 ...

  4. windows清理_快速清理Windows垃圾和注册表方法

    电脑用久了难免会产生很多windows垃圾,跟注册表的一些垃圾无用文件.那么这些垃圾是看着很碍眼的,也给电脑内存造成一定的负担.那么要怎样才能快速的清理Windows垃圾和注册表让我们的电脑看起来更加 ...

  5. JAVA读取注册表中的值

    需求:java动态读取注册表来调用第三方应用程序(如:qq.微信.网易云音乐等)启动,为什么说动态呢,因为使用绝对路径,每个人的电脑安装的路径并不一定相同,但注册表中的路径一般都相同,所以只要获取注册 ...

  6. 认识Windows XP注册表

    认识Windows XP注册表 1.概述 Windows XP注册表实际上是一个庞大的数据库,这个数据库记录了机器软硬件环境的各种信息,对操作系统及应用程序的正常运行至关重要.具体来讲,此数据库包含了 ...

  7. JavaScript读取注册表

    代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. ...

  8. 如何查看windows的注册表

    如何查看注册表 开始-运行-输入regedit回车即可 ==============================什么是注册表? 注册表因为它复杂的结构和没有任何联系的CLSID键使得它可能看上去很 ...

  9. qsettings删除注册表_Qt QSettings读取注册表和ini | 学步园

    1.读取注册表,以读取已经安装的软件为例. 已经安装的软件信息的注册表位置: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ ...

最新文章

  1. pythonasyncio在哪个版本好_理解Python asyncio的简洁方式
  2. 为什么线粒体DNA突变率高?
  3. 描述最常用的5种http方法的用途_对不起,来晚了,这可能是设计模式讲的最通俗易懂的文章(收藏)
  4. shell 字符串分割
  5. Hive启动报错org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeE...
  6. php生日验证,PHP验证生日
  7. 将serversocket 写在按钮事件中连接不上_看 Netty 在 Dubbo 中如何应用
  8. 卸载loadrunner
  9. 牛腩新闻发布系统 (6) 在线浮动的客服功能
  10. Intro to Xamarin.Android Xamarin Android入门教程 Lynda课程中文字幕
  11. 小米 android 7.0下载地址,小米5安卓7.0公测版固件下载地址 仅限开发版
  12. fedora 19 安装中文语言包
  13. linux 终端使用aplay播放wav
  14. BGP 自动路由聚合
  15. 【口诀】巧记泰勒公式
  16. 我的VSTO之路(三):Word基本知识
  17. 微信小程序自定义生成动态分享内容
  18. python代码手机壁纸_Python制作微信好友背景墙教程(附完整代码)
  19. 学法普法知识宣传教育答题小程序功能设计
  20. 电脑C盘满了怎么办?教您3招快速释放C盘空间

热门文章

  1. 百万人在线的直播间实时聊天消息分发技术
  2. Java设置环境变量的作用和意义
  3. Ditto设置全局仅粘贴文本快捷键
  4. matlab处理常见实验数据之中值滤波与均值滤波 medfilt1 smooth
  5. Python笔记:文档注释docstrings, 让函数更易读懂
  6. 交换两个变量的值的三种方法
  7. vue-vuetify-admin案例讲解
  8. 平替笔和ipad笔差别大吗?主动式电容笔推荐
  9. element子组件向父组件传值
  10. 奈氏准则和香农定理_计算机网络