Qt获取可用串口号

主页面头文件添加:

private:
///*获取串口号相关
    QStringList m_listcomboName;
    HKEY hKey;
    LPCWSTR subkey;
    wchar_t keyname[256]; //键名数组
    char keyvalue[256];  //键值数组
    DWORD keysize,type,valuesize;
    int indexnum;
///*获取串口号相关

///*获取串口号相关
public:
    QString getcomm(int index,QString keyorvalue); //读取键名
///*获取串口号相关

主界面cpp文件
1、添加getcomm函数定义:

///*获取串口号相关
QString MainWindow::getcomm(int index,QString keyorvalue)
//index为索引号,keyorvalue为选择返回值应该为key还是value
{
    QString commresult;
    if(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("HARDWARE\\DEVICEMAP\\SERIALCOMM"),0,KEY_READ,&hKey)!=0)
    {
        QString error="Cannotopenregedit!";//无法打开注册表时返回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//for(inti=0;i<=keysize;i++)    读取键名
        for(int j=0;jif(keyvalue[j]!=0x00)
             {
                 valuemessage.append(keyvalue[j]);
             }
        }//for(intj=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);//关闭注册表
}
///*获取串口号相关

2、主函数添加代码


///*获取串口号相关
    QString path="HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM\\";
    QSettings * settings = new QSettings(path,QSettings::NativeFormat);
    QStringList key = settings->allKeys();
    int num=(int)key.size();
    QString value;
    for(int i=0;ivalue = getcomm(i,"value");
        m_listcomboName<<value;

        //添加文本浏览器textBrowser中
        ui->textBrowser->insertPlainText(value+"\r\n");
        //添加到下拉选择框portNameComboBox中
        ui->portNameComboBox->addItem(value);
    }
///*获取串口号相关

参考链接:
http://blog.csdn.net/cliffordl/article/details/14450469

你可能感兴趣的:(Qt,串口,qt,Windows)