1. 本来想直接用Settings来获取的,但是串口信息类似 "\Device\Serial0",死活获取不了,用了转义、反斜杠还是获取不到,所以就放弃了,网上好像也没有获取成功的。
  2. 所以就用winapi来获取了,参考了网上源码
  3. cpp文件
  4. /*
  5. 初始化串口
  6. */
  7. void MainWindow::init_comm()
  8. {
  9. QString path = "HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM";
  10. QSettings *settings = new QSettings(path, QSettings::NativeFormat);
  11. QStringList key = settings->allKeys();
  12. QStringList comlist ;
  13. QStringList Baudlist ;
  14. //    QStringList Paritylist ;
  15. //    QStringList DataBitslist;
  16. //    QStringList StopBitslist;
  17. //    QStringList ControlFlowlist;
  18. comlist.clear();
  19. /* 取串口名 */
  20. for (int i=0; i<key.size(); i++) {
  21. comlist << getcomm(i, "value");
  22. }
  23. ui->ComPortcomboBox->addItems(comlist);
  24. ....
  25. }
  26. /*
  27. 读取键值
  28. */
  29. QString MainWindow::getcomm(int index, QString keyorvalue)
  30. {
  31. QString commresult;
  32. if (::RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("HARDWARE\\DEVICEMAP\\SERIALCOMM"), 0, KEY_READ, &hKey) != 0) {
  33. QString error="Cannot open regedit!";//无法打开注册表时返回error
  34. return error;
  35. }//if(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,subkey,0,KEY_READ,&hKey)!=0)
  36. QString keymessage;//键名
  37. QString message;
  38. QString valuemessage;//键值
  39. indexnum = index;//要读取键值的索引号
  40. keysize = sizeof(keyname);
  41. valuesize = sizeof(keyvalue);
  42. if (RegEnumValue(hKey, indexnum, keyname, &keysize, 0, &type, (BYTE*)keyvalue, &valuesize) == 0) { //列举键名和值
  43. for (int i=0; i<(int)keysize; i++) {
  44. message = keyname[i];
  45. keymessage.append(message);
  46. }
  47. for (int j=0; j<(int)valuesize; j++) {
  48. if (keyvalue[j] != 0x00) {
  49. valuemessage.append(keyvalue[j]);
  50. }
  51. }
  52. if (keyorvalue == "key") {
  53. commresult = keymessage;
  54. }
  55. if (keyorvalue == "value") {
  56. commresult=valuemessage;
  57. }
  58. } else {
  59. commresult = "nokey";
  60. }
  61. RegCloseKey(hKey);//关闭注册表
  62. return commresult;
  63. }


  1. .h文件
  2. #include <QSettings>
  3. #include <qt_windows.h>
  4. HKEY hKey;
  5. LPCWSTR subkey;
  6. wchar_t keyname[256]; //键名数组
  7. char keyvalue[256];  //键值数组
  8. DWORD keysize,type,valuesize;
  9. int indexnum;

http://blog.csdn.net/emdfans/article/details/38588537

最新文章

  1. IE8+兼容经验小结
  2. Microsoft.Crm.Setup.SrsDataConnector.RegisterServerAction 操作失败
  3. 【Java每日一题】20161125
  4. Intro to Filtering with Network Monitor 3.0
  5. 如何让div水平居中
  6. String类的比较
  7. eclipse下的Tomcat安装与web项目 搭建
  8. WPF组件开发之组件的基类
  9. Java当中的运算符
  10. Java中的流程控制(三)
  11. git branch(转)
  12. 时光轴三之 ExpandableListView版时光轴效果
  13. IBM developer:Kafka ACLs
  14. NLP入门资料
  15. fjwc2019 D1T1 全连(dp+树状数组)
  16. Android自定义权限
  17. js url?callback=xxx xxx的介绍
  18. 简单利用gulp-babel搭建es6转es5环境
  19. 20145314郑凯杰《网络对抗技术》PE文件病毒捆绑(插入捆绑)的实现
  20. 解析ASP.NET Mvc开发之查询数据实例 分类: ASP.NET 2014-01-02 01:27 5788人阅读 评论(3) 收藏

热门文章

  1. SQL XML process
  2. rac安装中遇到的问题
  3. 输出多行字符的一个简单JAVA小程序
  4. 对常量的引用(reference to const)的一般用途(转载)
  5. EL表达式(Expression Language)
  6. Linux 抓包
  7. Spark源码学习2
  8. c#实现pdf另存为功能
  9. javascript小练习-Firefox和低版本chrome下必须采用document方法获取到元素。
  10. Howie带你云上飘-新浪云