qt--硬件序列号

获取mac地址 

在pro工程中加入:QT += network  

 

 

win.h文件

复制代码
#ifndef WIN_H
#define WIN_H

#include <QWidget>
#include <QDebug>
#include <QNetworkInterface>  //导入头文件

class Win : public QWidget
{
    Q_OBJECT

public:
    Win(QWidget *parent = nullptr);
    ~Win();

    QStringList get_mac();//获取mac函数

};
#endif // WIN_H
复制代码

win.cpp文件

复制代码
#include "win.h"

Win::Win(QWidget *parent)
    : QWidget(parent)
{
    this->resize(300,200);
    QStringList maclist=get_mac();
    qDebug()<<maclist[0];

}

Win::~Win()
{
}

QStringList Win::get_mac()
{
QStringList mac_list;
QString strMac;
QList<QNetworkInterface> ifaces = QNetworkInterface::allInterfaces();
//返回一个在主机上找到的所有网络接口的列表。如果查找失败,则返回一个0个元素的列表
for (int i=0; i<ifaces.count(); i++)
    {
        QNetworkInterface iface = ifaces.at(i);

        //过滤掉本地回环地址、没有开启的地址
        if (iface.flags().testFlag(QNetworkInterface::IsUp) && !iface.flags().testFlag(QNetworkInterface::IsLoopBack))
        {
            //过滤掉虚拟地址
            if (!(iface.humanReadableName().contains("VMware",Qt::CaseInsensitive)))
            {
                strMac = iface.hardwareAddress();
                mac_list.append(strMac);
            }
        }
    }
    return mac_list;

}
复制代码

 

 

 

硬件信息

需要:#include <QProcess>

win.cpp

复制代码
#include "win.h"

Win::Win(QWidget *parent)
    : QWidget(parent)
{
    this->resize(300,200);

    QString str=getWMIC("wmic cpu get processorid");  //查询cpu序列号
    str=getWMIC("wmic baseboard get serialnumber");  //查询主板序列号
    str=getWMIC("wmic bios get serialnumber");    //查询BIOS序列号
    str=getWMIC("wmic diskdrive get serialnumber");  //查看硬盘
    str=getWMIC("wmic cpu get Name");                //获取cpu名称
    //"Intel(R) Core(TM) i7-3537U CPU @ 2.00GHz"

    str=getWMIC("wmic cpu get NumberOfCores");  //获取cpu核心数
    //"2"
    str=getWMIC("wmic cpu get NumberOfLogicalProcessors"); //获取cpu线程数
    //"4"


    qDebug()<<str;
}

Win::~Win()
{
}

QString Win::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;
}
复制代码

 

 

 

 

 

 

 

 

posted @   天子骄龙  阅读(791)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示

目录导航