利用Qt實現獲取計算機的硬件信息
更新時間:2022年12月09日 14:20:46 作者:碼農飛飛
在開發(fā)時,常常會需要用到計算機的相關信息。利用這些信息,我們可以開發(fā)一些輔助模塊。本文將利用Qt實現獲取計算機的硬件信息,感興趣的可以嘗試一下
獲取的計算機信息包括:
1.計算機的名稱
2.所有的IP地址
3.計算機的當前時間
4.CPU型號
5.顯卡型號(win10不兼容)
6.內存大小
7.CPU的核數
10.獲得顯卡的內存(win10不兼容)
#include <QtCore/QCoreApplication> #include <Windows.h> #include <QtCore\QTime> #include <QtCore\qsettings.h> #include <dxgi.h> #include <QtNetwork\qhostinfo.h> #include <QtCore\qthread.h> //需要依賴dxgi.lib庫文件 int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); //獲得計算機的名稱 QString hostName = QHostInfo::localHostName(); //獲得所有的IP地址 QHostInfo hostInfo = QHostInfo::fromName(QHostInfo::localHostName()); QList<QHostAddress> listAdress = hostInfo.addresses(); QStringList ipv4List; for(int index=0; index<listAdress.size(); ++index) { if(listAdress.at(index).protocol() == QAbstractSocket::IPv4Protocol) { ipv4List.push_back(listAdress.at(index).toString()); } } //獲得計算機的當前時間 QTime::currentTime().toString("hh::mm::ss"); //獲得CPU型號 QSettings* cpu = new QSettings("HKEY_LOCAL_MACHINE\\HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0", QSettings::NativeFormat); QString cpuDescribe = cpu->value("ProcessorNameString").toString(); delete cpu; //獲得顯卡型號(win10不兼容) QSettings *videoCard = new QSettings("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\nvlddmkm\\Device0",QSettings::NativeFormat); QString videoCardType = videoCard->value("Device Description").toString(); delete videoCard; //獲得內存大小 MEMORYSTATUSEX statex; statex.dwLength = sizeof(statex); GlobalMemoryStatusEx(&statex); unsigned long memory_size = statex.ullTotalPhys; int memory_size_MB = static_cast<double>(statex.ullTotalPhys)/static_cast<double>(1024*1024); //獲得CPU的核數 QThread::idealThreadCount(); //獲得顯卡的內存(win10不兼容) IDXGIFactory* pFactory; IDXGIAdapter* pAdapter; std::vector<IDXGIAdapter*> vAdapters; unsigned int total_Memory = 0; int iAdapterNum = 0; HRESULT hr = CreateDXGIFactory(__uuidof(IDXGIFactory),(void**)(&pFactory)); if(FAILED(hr)) return -1; while(pFactory->EnumAdapters(iAdapterNum, &pAdapter) != DXGI_ERROR_NOT_FOUND) { vAdapters.push_back(pAdapter); ++iAdapterNum; } for(size_t i = 0; i<vAdapters.size(); ++i) { DXGI_ADAPTER_DESC adpterDesc; vAdapters[i]->GetDesc(&adpterDesc); total_Memory += adpterDesc.SharedSystemMemory; } int destInfo = total_Memory /1024/1024; return a.exec(); }
補充
當然利用QT還可以獲取一些其他信息,下面是小編為大家整理的一些方法,需要的可以參考一下
獲取MAC地址
// 獲取MAC地址 QString Registration::GetMac() { // 獲取所有網絡接口列表 QList<QNetworkInterface> nets = QNetworkInterface::allInterfaces(); // 遍歷接口 int nCnt = nets.count(); QString strMacAddr = ""; for(int i = 0; i < nCnt; i++) { // 網絡接口需被激活且正在運行且不是回環(huán)地址,才可能是要找的地址 if(nets[i].flags().testFlag(QNetworkInterface::IsUp) && nets[i].flags().testFlag(QNetworkInterface::IsRunning) && !nets[i].flags().testFlag(QNetworkInterface::IsLoopBack)) { // 該mac的ip地址不能是回環(huán)地址并且是ipv4地址 for(int j = 0; j < nets[i].addressEntries().size(); j++) { if(nets[i].addressEntries().at(j).ip() != QHostAddress::LocalHost && nets[i].addressEntries().at(j).ip().protocol() == QAbstractSocket::IPv4Protocol) { strMacAddr = nets[i].hardwareAddress(); } } } } return strMacAddr; }
獲取處理器ID
通過wmic指令獲取。
// 獲取CPU處理器ID QString Registration::GetCPUProcessorid() { QString cmd = QString("wmic cpu get processorid"); return GetWMICInfo(cmd); }
獲取主板序列號
通過wmic指令獲取。
// 獲取主板序列號 QString Registration::GetBaseboardSerialnumber() { QString cmd = QString("wmic baseboard get serialnumber"); return GetWMICInfo(cmd); }
獲取BIOS序列號
通過wmic指令獲取。
// 獲取BIOS序列號 QString Registration::GetBIOSSerialnumber() { QString cmd = QString("wmic bios get serialnumber"); return GetWMICInfo(cmd); }
到此這篇關于利用Qt實現獲取計算機的硬件信息的文章就介紹到這了,更多相關Qt獲取計算機硬件信息內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:
相關文章
C++ 中 const和static readonly區(qū)別
這篇文章主要介紹了C++ 中 const和static readonly區(qū)別的相關資料,需要的朋友可以參考下2017-05-05