打開注冊表

菜單-》運(yùn)行
輸入regedit
到目錄
HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM\\
中,該目錄下有的com口表示系統(tǒng)當(dāng)前存在的com
//獲取系統(tǒng)串口注冊表中index索引位置的鍵名或鍵值
//QString為value字符串時為獲取鍵值,鍵值即com名
QString getcomm(int index, QString keyorvalue)
{
QString commresult = "";
QString strkey = "HARDWARE\\DEVICEMAP\\SERIALCOMM";//子鍵路徑
int a = strkey.toWCharArray(subkey);
subkey[a] = L'\0';
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, subkey, 0, KEY_READ|KEY_QUERY_VALUE, &hKey) != 0 )
{
QMessageBox::question(NULL, QString("錯誤"), QString("注冊表打開失敗\r\n請檢查注冊表路徑是否正確!"));
}
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 <keysize; i++)
{
message = QString::fromStdWString(keyname);
keymessage.append(message);
}
//讀取鍵值
for (int j = 0; j < valuesize; j++)
{
if (keyvalue[j] != 0x00 )
{
valuemessage.append(keyvalue[j]);
}
}
if ( keyorvalue == "key" )
{
commresult = keymessage;
}
if ( keyorvalue == "value" )
{
commresult = valuemessage;
}
}
else
{
commresult = "nokey";
}
::RegCloseKey(hKey); //關(guān)閉注冊表
return commresult;
}
//系統(tǒng)存在串口以及其他所有串口放入到comboxcomlist列表中
void init_comlist(void)
{
QString path = "HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM";
QSettings *settings = new QSettings(path, QSettings::NativeFormat);
QStringList key = settings->allKeys();
//系統(tǒng)注冊表中com存在的個數(shù)
int comkeycount = key.size();
//qDebug() << comkeycount << key; //2 ("/Device/Serial0", "/Device/VCP0")
regcomlist.clear();
comboxcomlist.clear();
for ( int i = 0; i < comkeycount; i++ )
{
//將注冊表中有的com名字放入列表中
//qDebug() << getcomm(i, "key");
regcomlist << getcomm(i, "value");
//qDebug() << regcomlist.value(i);
}
qDebug() << regcomlist;
qDebug() << create_user_virtual_comlist;
qDebug() << create_private_virtual_comlist;
//兩種情況,第一種,系統(tǒng)注冊表此時有虛擬串口的信息,那么要將保存系統(tǒng)注冊表中串口信息的regcomlist列表中刪除掉虛擬串口,create_user_virtual_comlist,create_private_virtual_comlist已經(jīng)保存了上次的虛擬串口列表
//for ( int i = 0; create_user_virtual_comlist; )
//第二種,系統(tǒng)注冊表此時沒有虛擬串口信息,只有本機(jī)串口信息,那么就不需要刪除
bool findflag = false;
for ( int i = 0; i < MOST_VIRTUAL_COM_NUM; i++ )//combox組件中添加255個com
{
findflag = false;
//遍歷保存注冊表中com的列表
for ( int j = 0 ; j < comkeycount; j++ )
{
if ( QString::compare(regcomlist.value(j), QString("COM%1").arg(i + 1)) == 0 )
{
comboxcomlist << QString(regcomlist.value(j) + QString(" (本機(jī))"));
findflag = true;
break;
}
}
if ( findflag == true )
continue;
comboxcomlist << QString("COM%1").arg(i + 1);
}另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
名稱欄目:Qt獲取系統(tǒng)串口信息-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://chinadenli.net/article32/cdoisc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、定制開發(fā)、虛擬主機(jī)、全網(wǎng)營銷推廣、動態(tài)網(wǎng)站、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容