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

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())

&& (item.hardwareAddress().toStdString().length()>0))

{

macList.append(item.hardwareAddress());

}

}

return macList;

}

获取设备联网状态

如果设备已连接外网,则返回True;否则返回False

//获取联网状态

bool GetHardWare::getInternetState()

{

//能ping的通百度则说明可以联网

QTcpSocket tcpClient;

tcpClient.abort();

tcpClient.connectToHost(“www.baidu.com”, 80);

//100毫秒没有连接上则判断不在线

return tcpClient.waitForConnected(100);

}

运行效果

最后

金三银四马上就到了,希望大家能好好学习一下这些技术点

学习视频:

大厂面试真题:

alse

//获取联网状态

bool GetHardWare::getInternetState()

{

//能ping的通百度则说明可以联网

QTcpSocket tcpClient;

tcpClient.abort();

tcpClient.connectToHost(“www.baidu.com”, 80);

//100毫秒没有连接上则判断不在线

return tcpClient.waitForConnected(100);

}

运行效果

最后

金三银四马上就到了,希望大家能好好学习一下这些技术点

学习视频:

[外链图片转存中…(img-2gKzPyg5-1714438712996)]

大厂面试真题:

[外链图片转存中…(img-ZFDfI1ZR-1714438712997)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值