Qt笔记(三十九)之Qt获取电脑硬件信息

本文详细介绍了如何使用C++中的QProcess库执行WMIC命令获取计算机CPU的核心数、线程数、序列号以及硬盘的序列号,并处理了输出信息,以清晰展示在界面上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.前言
楼主在工作开发中遇到过有些客户想软件开启之后就获取当前电脑的一些硬件设备信息,然后显示到界面上,今天楼主将这部分抽离,以此做一个记录,该文章主要是获取cpu信息以及硬盘序列号

二.实现
主要使用利用wmic和QProcess来实现,QProcess获取wmic的执行结果,然后进行解析
1.获取cpu信息

void Widget::getCpuInfo()
{
    QProcess p1;
    p1.start("wmic cpu get name");
    p1.waitForFinished();
    QString res1 = QString::fromLocal8Bit(p1.readAllStandardOutput());
    qDebug()<<"cpu名称:"<<res1;

    QProcess p2;
    p2.start("wmic cpu get NumberOfCores");
    p2.waitForFinished();
    QString res2 = QString::fromLocal8Bit(p2.readAllStandardOutput());
    qDebug()<<"cpu核心数:"<<res2;

    QProcess p3;
    p3.start("wmic cpu get NumberOfLogicalProcessors");
    p3.waitForFinished();
    QString res3 = QString::fromLocal8Bit(p3.readAllStandardOutput());
    qDebug()<<"cpu线程:"<<res3;

    QProcess p4;
    p4.start("wmic cpu get NumberOfLogicalProcessors");
    p4.waitForFinished();
    QString res4 = QString::fromLocal8Bit(p4.readAllStandardOutput());
    qDebug()<<"cpu序列号:"<<res4;
}

2.获取应硬盘序列号

    QProcess p5;
    p5.start("wmic diskdrive get serialnumber");
    p5.waitForFinished();
    QString res5 = QString::fromLocal8Bit(p5.readAllStandardOutput());
    qDebug()<<"硬盘序列号:"<<res5;

3.打印其中cpu的名字,信息如下
在这里插入图片描述
这种肯定不是我们想要的显示,因此我们需要解析,通过分析可知
1)数据中含有较多\r以及\n以及空格,所以可以用来作为分割标志或者直接替换掉,可能没啥用处
经过试验和分析,于是就有以下的处理逻辑

void Widget::fixInfo(QString str)
{
    // \r \n 去除
    str.remove("\r");
    str.remove("\n");

    // 去除多余的空格
    QStringList list = str.split(" ");
    QStringList objList;
    for(int i=0;i<list.count();i++)
    {
        if(list[i]!=" "&& list[i]!="")
        {
            objList.append(list[i]);
        }
    }

    // 重新组合
    qDebug()<<objList.join(" ");
}

效果对比

    QProcess p1;
    p1.start("wmic cpu get name");
    p1.waitForFinished();
    QString res1 = QString::fromLocal8Bit(p1.readAllStandardOutput());
    qDebug()<<"cpu名称:"<<res1;
    fixInfo(res1);

在这里插入图片描述

,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值