Qt獲取裝置資訊
阿新 • • 發佈:2021-02-04
技術標籤:QtQt獲取裝置資訊Qt獲取硬碟IDQt獲取CPU id
Qt獲取裝置資訊
概述:
1.給大家分享個小案例,望日後開發上會對大家有所幫助;
2.使用Qt獲取當前PC的詳細資訊,例如:pc主機名、當前ip地址(ipv4)、cpu ID、當前使用ip的 MAC地址等等;
3.案例背景是要用於軟體授權加密使用;
程式碼示例:
.h:
#pragma once
#include <QString>
class GlobalApiClass
{
private:
GlobalApiClass ();
~GlobalApiClass();
public:
static GlobalApiClass &GetInstance()
{
static GlobalApiClass instance;
return instance;
};
/*
* @brief:獲取主機名稱
*/
QString getUserName();
/*
* @brief:獲取本機IP
*/
QString getAddIP();
/*
* @brief:獲取本機MAC地址
*/
QString getHostMacAddress();
/*
* @brief:獲取硬碟
*/
QString getDiskdrive();
/*
* @brief:獲取本機IP地址
*/
QString getCpuID();
};
.cpp:
#include "GlobalApiClass.h"
#include <QProcess>
#include <QtNetWork/QHostInfo>
#include <QtNetWork/QHostAddress>
#include <QtNetWork/QNetworkInterface>
GlobalApiClass::GlobalApiClass()
{
}
GlobalApiClass::~GlobalApiClass()
{
}
QString GlobalApiClass::getUserName()
{
return QHostInfo::localHostName();
}
QString GlobalApiClass::getAddIP()
{
QList<QHostAddress> list = QNetworkInterface::allAddresses();
foreach(QHostAddress address, list)
{
if (address.protocol() == QAbstractSocket::IPv4Protocol)
//我們使用IPv4地址
return address.toString();
}
return 0;
}
QString GlobalApiClass::getHostMacAddress()
{
QList<QNetworkInterface> nets = QNetworkInterface::allInterfaces();// 獲取所有網路介面列表
int nCnt = nets.count();
QString strMacAddr = "";
for (int i = 0; i < nCnt; i++)
{
// 如果此網路介面被啟用並且正在執行並且不是迴環地址,則就是我們需要找的Mac地址
if (nets[i].flags().testFlag(QNetworkInterface::IsUp) && nets[i].flags().testFlag(QNetworkInterface::IsRunning) && !nets[i].flags().testFlag(QNetworkInterface::IsLoopBack))
{
strMacAddr = nets[i].hardwareAddress();
break;
}
}
return strMacAddr;
}
QString GlobalApiClass::getDiskdrive()
{
QProcess p(0);
p.start("wmic diskdrive get serialnumber");
p.waitForStarted();
p.waitForFinished();
QString result = QString::fromLocal8Bit(p.readAllStandardOutput());
QStringList list = result.split("\r\n");
if (list.size() < 1)
return "error";
return list.at(1).trimmed();
}
QString GlobalApiClass::getCpuID()
{
QString cpu_id = "";
QProcess p(0);
p.start("wmic CPU get ProcessorID");
p.waitForStarted();
p.waitForFinished();
cpu_id = QString::fromLocal8Bit(p.readAllStandardOutput());
cpu_id = cpu_id.remove("ProcessorId").trimmed();
return cpu_id;
}
列印輸出:
qDebug() <<QString::fromLocal8Bit("主機名:") << GlobalApiClass::GetInstance().getUserName();
qDebug() << QString::fromLocal8Bit("IP:")<< GlobalApiClass::GetInstance().getAddIP();
qDebug() << QString::fromLocal8Bit("硬碟ID:")<< GlobalApiClass::GetInstance().getDiskdrive();
qDebug() << QString::fromLocal8Bit("Mac地址:")<< GlobalApiClass::GetInstance().getHostMacAddress();
qDebug() << QString::fromLocal8Bit("cpu ID:")<< GlobalApiClass::GetInstance().getCpuID();
"主機名:" "RD-04"
"IP:" "192.168.1.1"
"硬碟ID:" "ZN18JXN8"
"Mac地址:" "C4:66:16:3A:09:56"
"cpu ID:" "BFEBFBFF000908ED"
拓展:
//獲取cpu名稱:wmic cpu get Name
//獲取cpu核心數:wmic cpu get NumberOfCores
//獲取cpu執行緒數:wmic cpu get NumberOfLogicalProcessors
//查詢cpu序列號:wmic cpu get processorid
//查詢主機板序列號:wmic baseboard get serialnumber
//查詢BIOS序列號:wmic bios get serialnumber
//檢視硬碟:wmic diskdrive get serialnumber
over:
歡迎大家關注作者在文末評論、點贊、轉發以及批評指正!
如果大家有更好的方法或有問題可以在文末評論一起討論!
共同學習!
共同進步!
文末一句話:
不論榮辱,不論悲歡,皆是過往,多說無益,多想傷身。
共勉!