php 读取注册表,qt4.1.0  读取注册表得到 串口信息的方法!

前段时间做串口开发,想做自动扫描串口设备功能 遇到问题 现在终于解决 程序写得不是很好,功能实现了。按照此方法应该能够扫描到其他硬件。

我遇到的问题:

使用QSettings时 对于注册表中串口信息中的 \Device\Serial0 这种key值 无法找到其value 是 \ 斜杠问题。

解决方法是 首先调用:

QString path="HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM";

QSettings *settings=new QSettings(path,QSettings::NativeFormat);

QStringList key=settings->allKeys();

int num=(int)key.size();

得到注册表中有多少个串口设备

然后使用win api得到 key 和 value 程序源码如下:QString  getcomm(int index,QString keyorvalue)返回key  或者 value

.h文件

#ifndef READCOM_H

#define READCOM_H

#include

#include

#include

class Readcom

{

public:

Readcom();

~Readcom();

private:

HKEY hKey;

LPCWSTR subkey;

wchar_t keyname[256]; //键名数组

char keyvalue[256];  //键值数组

DWORD keysize,type,valuesize;

int indexnum;

public:

QString getcomm(int index,QString keyorvalue); //读取键名

//QString getvalue(int index);//读取键值

};

#endif // READCOM_H

.cpp 文件

#include "readcom.h"

Readcom::Readcom()

{

}

Readcom::~Readcom()

{

}

QString Readcom::getcomm(int index,QString keyorvalue)

{

QString commresult="";

QString strkey="HARDWARE\\DEVICEMAP\\SERIALCOMM";//子键路径

subkey=strkey.ucs2();//类型转换

if(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,subkey,0,KEY_READ,&hKey)!=0)

{

QString error="Cannot open regedit!";//无法打开注册表时返回error

return error;

}//if(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,subkey,0,KEY_READ,&hKey)!=0)

QString keymessage="";//键名

QString message="";

QString valuemessage="";//键值

indexnum=index;//要读取键值的索引号

keysize=sizeof(keyname);

valuesize=sizeof(keyvalue);

if(::RegEnumValue(hKey,indexnum,keyname,&keysize,0,&type,(BYTE*)keyvalue,&valuesize)==0)//列举键名和值

{

for(int i=0;i

{

message=keyname;

keymessage.append(message);

}// for(int i=0;i<=keysize;i++)    读取键名

for(int j=0;j

{

if(keyvalue[j]!=0x00)

{ valuemessage.append(keyvalue[j]);}

}//for(int j=0;j

if(keyorvalue=="key")

{

commresult=keymessage;

}

if(keyorvalue=="value")

{

commresult=valuemessage;

}

}

else

{

commresult="nokey";

} //if(::RegEnumValue(hKey,indexnum,keyname,&keysize,0,&type,(BYTE*)keyvalue,&valuesize)==0) 列举键名和值

return commresult;

::RegCloseKey(hKey);//关闭注册表

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值