Qt-获取计算机信息MAC、IP、CPU、主机名等等
简介
在我们开发软件时,会经常需要用到计算机的相关信息,基于这些信息,我们可以开发一些辅助模块。本文将分享几个可以应用在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指令获取。
-
// 获取硬盘驱动器序列号
-
QString Registration::GetDiskdriveSerialnumber()
-
{
-
QString cmd = QString("wmic diskdrive get serialnumber");
-
return GetWMICInfo(cmd);
-
}
效果图
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhffbigh
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
photoshop蒙版画笔没反应怎么办
PHP中文网 06-24