天天看點

QT查詢計算機硬體資訊

說明:

使用WMIC擷取計算機的一些硬體資訊,該方法隻能在windows上使用。

可擷取内容如下:

  1. 查詢cpu資訊:wmic cpu get DeviceID,name,NumberOfCores,NumberOfLogicalProcessors
  2. 擷取cpu名稱:wmic cpu get Name
  3. 查詢cpu序列号:wmic cpu get processorid
  4. 擷取cpu核心數:wmic cpu get NumberOfCores
  5. 擷取cpu線程數:wmic cpu get NumberOfLogicalProcessors
  6. 查詢主機闆序列号:wmic baseboard get serialnumber
  7. 擷取主機闆資訊:wmic csproduct
  8. 查詢BIOS序列号:wmic bios get serialnumber
  9. 查詢磁盤資訊:wmic logicaldisk get name,Description,filesystem,size,freespace
  10. 檢視硬碟:wmic diskdrive get serialnumber
  11. 查詢第一個磁盤序列号:wmic diskdrive where index=0 get serialnumber
  12. 查詢不為空的MAC位址:wmic nic where netconnectionid!=NULL get MacAddress
  13. 查詢記憶體資訊: wmic memorychip get Capacity,TAG
  14. 查詢系統資訊: wmic os get Caption,CSDVersion,CSName,SerialNumber,Version

代碼實作如下:

#include <QProcess>
QString getWMIC(const QString &cmd)
{
    QProcess p;
    p.start(cmd);
    p.waitForFinished();
    QString result = QString::fromLocal8Bit(p.readAllStandardOutput());
    QStringList list = cmd.split(" ");
    result = result.remove(list.last(), Qt::CaseInsensitive);
    result = result.replace("\r", "");
    result = result.replace("\n", "");
    result = result.simplified();
    return result;
}
QString getCpuName()    //擷取cpu名稱:wmic cpu get Name
{
    return getWMIC("wmic cpu get name");
}
QString getCpuId()  //查詢cpu序列号:wmic cpu get processorid
{
    return getWMIC("wmic cpu get processorid");
}
QString getCpuCoresNum()    //擷取cpu核心數:wmic cpu get NumberOfCores
{
    return getWMIC("wmic cpu get NumberOfCores");
}
QString getCpuLogicalProcessorsNum() //擷取cpu線程數:wmic cpu get NumberOfLogicalProcessors
{
    return getWMIC("wmic cpu get NumberOfLogicalProcessors");
}
QString getDiskNum()    //檢視硬碟:wmic diskdrive get serialnumber
{
    return getWMIC("wmic diskdrive where index=0 get serialnumber");
}
QString getBaseBordNum()    //查詢主機闆序列号:wmic baseboard get serialnumber
{
    return getWMIC("wmic baseboard get serialnumber");
}
QString getBiosNum()    //查詢BIOS序列号:wmic bios get serialnumber
{
    return getWMIC("wmic bios get serialnumber");
}
//其他一樣
           

使用示例:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    qDebug()<<"getCpuName:"<<getCpuName();
    qDebug()<<"getCpuId:"<<getCpuId();
    qDebug()<<"getCpuCoresNum:"<<getCpuCoresNum();
    qDebug()<<"getCpuLogicalProcessorsNum:"<<getCpuLogicalProcessorsNum();
    qDebug()<<"getDiskNum:"<<getDiskNum();
    qDebug()<<"getBaseBordNum:"<<getBaseBordNum();
    qDebug()<<"getBiosNum:"<<getBiosNum();
}
           

輸出結果:

getCpuName: "Intel(R) Core(TM) i5-9500 CPU @ 3.00GHz"
getCpuId: "BFEBFBFF000906EA"
getCpuCoresNum: "6"
getCpuLogicalProcessorsNum: "6"
getDiskNum: "WD-WCC6Y4VJNRVN"
getBaseBordNum: ""
getBiosNum: "M70E1VP5"
           

繼續閱讀