作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处
简介
在我们开发软件时,会经常需要用到计算机的相关信息,基于这些信息,我们可以开发一些辅助模块。本文将分享几个可以应用在Qt中的常用函数,帮助大家更便捷地获取如下计算机信息。
- 主机名。
- CPU。
- MAC地址。
- IP地址。
- CPU核心数。
- CPU线程数(逻辑处理器)。
- 处理器ID。
- 主板序列号。
- BIOS序列号。
- 硬盘驱动器序列号。
主机名
// 获取计算机名称
QString Registration::GetMachineName()
{
// 获取主机名
QString machineName = QHostInfo::localHostName();
return machineName;
}
CPU
// 获取CPU信息
QString Registration::GetCPU()
{
// 获取CPU注册表地址
QSettings cpu("HKEY_LOCAL_MACHINE\\HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0", QSettings::NativeFormat);
// 提取CPU信息
QString m_cpu = cpu.value("ProcessorNameString").toString();
return m_cpu;
}
MAC地址
// 获取MAC地址
QString Registration::GetMac()
{
// 获取所有网络接口列表
QList<QNetworkInterface> nets = QNetworkInterface::allInterfaces();
// 遍历接口
int nCnt = nets.count();
QString strMacAddr = "";
for(int i = 0; i < nCnt; i++)
{
// 网络接口需被激活且正在运行且不是回环地址,才可能是要找的地址
if(nets[i].flags().testFlag(QNetworkInterface::IsUp) &&
nets[i].flags().testFlag(QNetworkInterface::IsRunning) &&
!nets[i].flags().testFlag(QNetworkInterface::IsLoopBack))
{
// 该mac的ip地址不能是回环地址并且是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;
}
IP地址
// 获取IP地址
QString Registration::GetIP()
{
// 获取所有网络接口列表
QList<QNetworkInterface> nets = QNetworkInterface::allInterfaces();
// 遍历接口
int nCnt = nets.count();
QString strIpAddr = "";
for(int i = 0; i < nCnt; i++)
{
// // 网络接口需被激活且正在运行且不是回环地址,才可能是要找的地址
if(nets[i].flags().testFlag(QNetworkInterface::IsUp) &&
nets[i].flags().testFlag(QNetworkInterface::IsRunning) &&
!nets[i].flags().testFlag(QNetworkInterface::IsLoopBack))
{
// 该mac的ip地址不能是回环地址并且是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)
{
strIpAddr=nets[i].addressEntries().at(j).ip().toString();
}
}
}
}
return strIpAddr;
}
获取wmic指令结果
// 获取WMIC指令结果
QString Registration::GetWMICInfo(QString cmd)
{
// cmd指令
QProcess Cmd;
Cmd.start(cmd);
Cmd.waitForFinished();
// 获取输出结果
QString result = QString::fromLocal8Bit(Cmd.readAllStandardOutput());
// 拆分指令字符串
QStringList list = cmd.split(" ");
// 指令字符串的最后一个单词提取出来作匹配,匹配成功则在result中删除
// 如:wmic cpu get processorid,那么list.last()就是processorid
// Qt::CaseInsensitive表示无视大小写,Qt::CaseSensitive表示对大小写敏感
result = result.remove(list.last(), Qt::CaseInsensitive);
// 删除输出结果中的回车和换行
result = result.replace("\r", "");
result = result.replace("\n", "");
// 去除空格操作
result = result.simplified();
return result;
}
CPU核心数
通过wmic指令获取。
// 获取CPU核心数
QString Registration::GetCPUNumberOfCores()
{
QString cmd = QString("wmic cpu get NumberOfCores");
return GetWMICInfo(cmd);
}
CPU线程数
通过wmic指令获取。
// 获取CPU线程数
QString Registration::GetCPUNumberOfLogicalProcessors()
{
QString cmd = QString("wmic cpu get NumberOfLogicalProcessors");
return GetWMICInfo(cmd);
}
处理器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);
}
硬盘驱动器序列号
通过wmic指令获取。文章来源:https://www.toymoban.com/news/detail-562261.html
// 获取硬盘驱动器序列号
QString Registration::GetDiskdriveSerialnumber()
{
QString cmd = QString("wmic diskdrive get serialnumber");
return GetWMICInfo(cmd);
}
效果图
文章来源地址https://www.toymoban.com/news/detail-562261.html
到了这里,关于Qt-获取计算机信息(MAC、IP、CPU、主机名等等)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!