Qt知识点梳理 —— 获取设备CPU、内存、磁盘等硬件信息

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

//调用Windows WMIC指令 获取硬件信息 此方法仅适用于Windows环境

QString GetHardWare::GetWare(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;

}

具体实现


获取电脑名称

如果此处报错,这里没详细描述,可查看:【Qt/C++异常笔记】“QHostInfo”: 不是类或命名空间名称

//获取电脑名字

QString GetHardWare::getMachineName()

{

QString machineName = QHostInfo::localHostName();

return machineName;

}

获取CPU信息

如:Intel® Core™ i7-8750H CPU @ 2.20GHz

//获取CPU信息

QString GetHardWare::getCpuInfo()

{

return GetWare(“wmic cpu get name”);

}

获取CPU序列号

//获取CPU序列号

QString GetHardWare::getCpuSerial()

{

return GetWare(“wmic cpu get processorid”);

}

获取内存信息

返回信息依次为:已使用内存大小、未使用内存大小、总内存大小,单位为MB;

如:(“5041”, “3001”, “8042”)

//获取内存信息

//返回信息依次为:已使用内存大小、未使用内存大小、总内存大小,单位为MB

//如:(“5041”, “3001”, “8042”)

QStringList GetHardWare::getMemoryInfo()

{

QStringList m_memInfo;

int memoryPercent;

int memAll;

int memUse;

int memFree;

MEMORYSTATUSEX statex;

statex.dwLength = sizeof (statex);

GlobalMemoryStatusEx(&statex);

memoryPercent = statex.dwMemoryLoad;

memAll = statex.ullTotalPhys / MB;

memFree = statex.ullAvailPhys / MB;

memUse = memAll - memFree;

m_memInfo.append(QString::number(memUse));

m_memInfo.append(QString::number(memFree));

m_memInfo.append(QString::number(memAll));

return m_memInfo;

}

获取第一个磁盘序列号

//获取第一个磁盘序列号

QString GetHardWare::getDiskSerial()

{

return GetWare(“wmic diskdrive where index=0 get serialnumber”);//只能在Windows环境下使用

}

获取磁盘信息

返回信息依次为:磁盘名称、已使用空间大小、未使用空间大小、总空间大小、使用百分比;

如: ((“C:/”, “92.9G”, “122.5G”, “215.5G”, “43”),

(“D:/”, “175.8G”, “135.2G”, “311.0G”, “56”),

(“E:/”, “90.9G”, “220.1G”, “311.0G”, “29”),

(“F:/”, “243.1G”, “66.4G”, “309.5G”, “78”))

//获取磁盘信息

//返回信息依次为:磁盘名称、已使用空间大小、未使用空间大小、总空间大小、使用百分比

//如: ((“C:/”, “92.9G”, “122.5G”, “215.5G”, “43”),

// (“D:/”, “175.8G”, “135.2G”, “311.0G”, “56”),

// (“E:/”, “90.9G”, “220.1G”, “311.0G”, “29”),

// (“F:/”, “243.1G”, “66.4G”, “309.5G”, “78”))

QList GetHardWare::getDiskInfo()

{

QList diskList;

QFileInfoList list = QDir::drives();

foreach (QFileInfo dir, list)

{

QStringList curDisk;

QString dirName = dir.absolutePath();

LPCWSTR lpcwstrDriver = (LPCWSTR)dirName.utf16();

ULARGE_INTEGER liFreeBytesAvailable, liTotalBytes, liTotalFreeBytes;

if(GetDiskFreeSpaceEx(lpcwstrDriver, &liFreeBytesAvailable, &liTotalBytes, &liTotalFreeBytes) )

{

//已使用的空间大小

QString use = QString::number((double) (liTotalBytes.QuadPart - liTotalFreeBytes.QuadPart) / GB, ‘f’, 1);

use += “G”;

//未使用的空间大小

QString free = QString::number((double) liTotalFreeBytes.QuadPart / GB, ‘f’, 1);

free += “G”;

//总空间大小

QString all = QString::number((double) liTotalBytes.QuadPart / GB, ‘f’, 1);

all += “G”;

//使用率百分比

int percent = 100 - ((double)liTotalFreeBytes.QuadPart / liTotalBytes.QuadPart) * 100;

curDisk.append(dirName);

curDisk.append(use);

curDisk.append(free);

curDisk.append(all);

curDisk.append(QString::number(percent));

}

diskList.append(curDisk);

}

return diskList;

}

获取操作系统信息

如:Windows 10 Version 1909 64bit

//获取系统信息

//如:Intel® Core™ i7-8750H CPU @ 2.20GHz

QString GetHardWare::getOSInfo()

{

QString m_osInfo;

typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);

LPFN_ISWOW64PROCESS fnIsWow64Process;

BOOL bIsWow64 = FALSE;

fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress( GetModuleHandle(TEXT(“kernel32”)),“IsWow64Process”);

if (NULL != fnIsWow64Process)

{

fnIsWow64Process(GetCurrentProcess(),&bIsWow64);

}

QString sysBit = “unknown”;

if(bIsWow64)

sysBit = “64bit”;

else

sysBit = “32bit”;

m_osInfo = QSysInfo::prettyProductName() + " " + sysBit;

return m_osInfo;

}

获取主板序列号

//获取主板序列号

QString GetHardWare::getBiosSerial()

{

return GetWare(“wmic baseboard get serialnumber”);

}

获取网卡MAC地址

如:(“00:15:5D:A2:BD:C7”, “00:50:56:C0:00:01”, “00:50:56:C0:00:08”, “D8:F2:CA:6D:6A:2D”)

//获取所有网卡的MAC地址

//如:(“00:15:5D:A2:BD:C7”, “00:50:56:C0:00:01”, “00:50:56:C0:00:08”, “D8:F2:CA:6D:6A:2D”)

QStringList GetHardWare::getMacAddress()

{

QStringList macList;

QList netList = QNetworkInterface::allInterfaces();

foreach(QNetworkInterface item, netList)//遍历所有网卡

{

if((QNetworkInterface::IsUp & item.flags()) && (QNetworkInterface::IsRunning & item.flags())

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

orkInterface::IsUp & item.flags()) && (QNetworkInterface::IsRunning & item.flags())

[外链图片转存中…(img-eVkVCmmC-1715900580861)]
[外链图片转存中…(img-jXEf6kHO-1715900580861)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

  • 13
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值