Qt知识点梳理 —— 获取设备CPU,java技术栈

2023-05-16

WMIC指令


在Windows环境下,我们可以通过使用WMIC获取设备的硬件信息,如下:

wmic cpu get Name //获取CPU名称

wmic cpu get NumberOfCores //获取CPU核心数

wmic cpu get NumberOfLogicalProcessors //获取CPU线程数

wmic cpu get processorid //获取CPU序列号

wmic baseboard get serialnumber //获取主板序列号

wmic csproduct //获取主板信息

wmic bios get serialnumber //获取BIOS序列号

wmic diskdrive get serialnumber //获取磁盘序列号

wmic logicaldisk get name,Description,filesystem,size,freespace //获取磁盘信息

wmic diskdrive where index=0 get serialnumber //获取第一个磁盘序列号

wmic nic where netconnectionid!=NULL get MacAddress //获取不为空的MAC地址

wmic memorychip get Capacity,TAG //获取内存信息

wmic os get Caption,CSDVersion,CSName,SerialNumber,Version //获取操作系统系统信息

使用,将上述指令传入即可:

//调用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) liTotal

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

FreeBytes.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;

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt知识点梳理 —— 获取设备CPU,java技术栈 的相关文章

  • FTP匿名登录

    介绍 从一个服务到另一个服务的目标 凭据可能会丢失在可公开访问的文件夹中的某个位置 xff0c 这将允许我们通过一个远程shell登录 xff0c 该shell不受监控 配置错误的服务可能会泄露信息 xff0c 使我们能够模拟受害者的数字身
  • Unable to start ServletWebServerApplicationContext due to missing ServletWeb解决办法

    当在springboot启动项目的时候报这种错误 xff1a 仔细一看 xff0c 报错原因是因为缺少ServletWebServerFactory的bean 既然是跟Servlet有关 xff0c 那么很可能是在web层面出现了问题 那么
  • 数据库锁概述

    行锁和表锁 主要是针对锁粒度划分的 xff0c 一般分为行锁 表锁 库锁 行锁 xff1a 访问数据库的时候 xff0c 锁定整个行数据 xff0c 防止并发错误 表锁 xff1a 访问数据库的时候 xff0c 锁定整个表数据 xff0c
  • Spring 常用注解

    Spring 常用注解 64 Component xff08 任何层 xff09 64 Controller 64 Service 64 Repository xff08 dao xff09 xff1a 用于实例化对象 64 Autowir
  • MyBatis 传递多个参数的4种方式

    MyBatis 传递多个参数的4种方式 方式1 xff1a 顺序传参 xff08 不推荐 xff09 span class token class name Employee span span class token function s
  • Java中String类的常用方法

    文章目录 Java 中 String 类的常用方法一 String 类的概念二 常用的构造方法三 常用方法1 toString 2 length 3 getBytes 4 toCharArray 5 charAt int index 6 i
  • ASR项目实战-数据

    使用机器学习方法来训练模型 xff0c 使用训练得到的模型来预测语音数据 xff0c 进而得到识别的结果文本 xff0c 这是实现语音识别产品的一般思路 本文着重介绍通用语音识别产品对于数据的诉求 对数据的要求 训练集 相关要求 xff0c
  • 如何写一棵简单的二叉查找树

    二叉查找树 完整代码 xff1a https github com problemin Algorithm blob master src Tree BSTree java 二叉排序树 xff08 Binary Sort Tree xff0
  • Redis常见的数据类型命令

    文章目录 Redis 常见的数据类型及命令一 常见的NoSQL二 Redis 简介三 key 键的一些操作命令四 Redis的五种基本数据结构1 String xff08 字符串 xff09 介绍常用命令1 1 set get1 2 app
  • Redis 的主从复制机制

    文章目录 Redis 的主从复制机制主从复制概述主从复制的作用主从复制环境的搭建主从复制的原理 哨兵模式概述哨兵模式的作用哨兵模式环境的搭建哨兵模式的原理 Cluster 模式 Redis 的主从复制机制 主从复制 概述 主从复制 xff0
  • Nginx 详解

    文章目录 Nginx 详解一 简介二 四大应用场景1 HTTP 服务器2 反向代理3 负载均衡4 动静分离 三 Linux 环境下安装Nginx四 Nginx 服务常用命令五 Nginx 配置文件1 全局块1 1 user1 2 worke
  • RabbitMQ 详解

    文章目录 RabbitMQ 详解一 MQ 简介1 MQ优缺点2 MQ应用场景3 AMQP 和 JMS4 常见的 MQ 产品 二 RabbitMQ 工作原理三 Linux环境安装RabbitMQ1 安装 Erlang2 安装 RabbitMQ
  • AndroidStudio卸载删除干净

    文章目录 前言一 卸载AndroidStudio程序二 删除目录 android三 xff0c 删除AndroidStudio xff0c Sdk目录在这里插入图片描述 这样文件目录就删除干净了 xff0c 接下来的教程是将配置删除 xff
  • 视图绑定ActivityMainBinding

    使用视图绑定 xff0c 可以更轻松的写与视图交互的代码 在模块中启动视图绑定之后 xff0c 系统会为每个模块中的每个XML布局文件生成一个绑定类 绑定类的实例包含对在相应布局中具有ID的所有视图的直接引用 可以代替findViewByI
  • 【FTP服务搭建】使用windows虚拟机搭建ftp服务,并能够使用ftp进行传输文件的操作

    参考了两位大佬写的教程 xff0c 自己实践了一下 xff0c 整理了一下操作步骤 使用机器 xff1a win10虚拟机 win7虚拟机 实验准备 win10下载filezilla下载地址 win10虚拟机关闭防火墙 两台机器可以相互 p
  • 操作系统经典问题——消费者生产者问题

    今日在学习操作系统的过程中遇到了这个问题 xff0c 实在是很苦恼一时间对于这种问题以及老师上课根据这个问题衍生的问题实在是一头雾水 在网络上寻找了一些大佬的讲解之后算是暂时有了点茅塞顿开的感觉 首先第一点什么是生产者 消费者问题 xff1
  • jar包的运行结果和源代码运行结果不一样

    问题 xff1a 我的A模块依赖了B模块 xff0c B模块更新了代码之后 xff0c 把A模块打包成jar包 xff0c 但是运行的时候我的B模块还是我修改之前的样子 报错 原因 xff1a 是因为我的B模块在更新了之后没有把它放到mav
  • Tensorflow数据读取篇之一 ——字节与张量的区别

    前言 字节串 xff08 bytes xff09 类型和张量 xff08 tensor xff09 类型是两种不同的数据类型 xff0c 它们在数据类型 内存分配和计算方式等方面有所不同 一 区别 数据类型 xff1a 字节串是一种特殊的不
  • O3DE社区发布2305.0版本

    O3DE社区发布了23年的第一个版本 xff0c 版本号为2305 0 2305 0版本对应的代码标签 xff0c 见链接 2305 0版本发布说明 xff0c 见链接 直接下载标签2305 0对应的源码 xff0c 命令如下 xff1a
  • 【机器学习】周志华西瓜书第八章集成学习习题8.3--编程实现AdaBoost模型,以不剪枝决策树为基学习器,在西瓜数据集3.0a上训练一个AdaBoost集成,并与教材图8.4进行比较

    xff08 1 xff09 问题理解与分析 编程实现AdaBoost模型 xff0c 不剪枝决策树为基学习器 xff0c 在西瓜数据集3 0a上训练一个AdaBoost集成 xff0c 并与教材图8 4进行比较 xff08 2 xff09

随机推荐

  • 【机器学习】周志华西瓜书第七章贝叶斯分类器习题--实现AODE分类器,以西瓜数据集3.0为训练集,对“测1”进行判别。

    from numpy import import numpy as np import pandas as pd 读取文件格式为xlsx的数据 def dataLoad filename df 61 pd read excel fliena
  • linux ubuntu版本下桌面图标过小或过大调整

    最近用虚拟机弄了个ubuntu系统 xff0c 但是在全屏状态下系统的桌面图标很小 xff08 如下图 xff09 后来发现是虚拟机的分辨率设置过大 xff08 大分辨率一般对应比较大的屏幕 xff09 xff0c 所以导致图标过小 更改方
  • css选择器定位元素

    CSS选择器是CSS语言的基本组成部分 xff0c 用于选择HTML或XML文档中要应用样式的元素 以下是一些常用的CSS选择器及其用法介绍 xff1a 元素选择器 xff1a 选择所有指定元素类型的元素 例如 xff1a p选择所有的段落
  • Spring Framework 学习

    Spring Framework 学习 1 Spring 核心概念1 1 IOC IOC容器 Bean DI 2 入门案例2 1 IOC入门案例2 2 DI 入门案例 3 IOC 基本内容3 1 bean 基础配置3 2 bean 实例化
  • POJ-2453

    As we known data stored in the computers is in binary form The problem we discuss now is about the positive integers and
  • Ubuntu系统下离线安装依赖包

    目录 一 离线安装Ubuntu依赖包 二 离线安装Python第三方库 为了解决在无网或局域网的条件下 xff0c 无法进行环境的安装部署问题 xff0c 使用将依赖包抽取出来 xff0c 再进行本地安装的方法 一 离线安装Ubuntu依赖
  • node:internal/modules/cjs/loader:936

    使用express的时候 xff0c 执行node app js时 xff0c 终端报了标题上面的错误 node internal modules cjs loader 936 throw err Error Cannot find mod
  • Uncaught TypeError: XXX is not a function的解决方法

    今天在学习JS的时候 xff0c 在学函数时 xff0c 发现了一个有点意思的问题 xff1a 在网上找了很多方法 xff0c 无果 xff0c 毕竟不是每个人的原因都相同 再回看了一下笔记 xff0c 对比了一下代码 xff0c 找到了可
  • 计算机组成原理测试习题集2

    1 某机用32位表示一个数 xff0c 阶码部分占8位 xff08 含一个符号位 xff09 xff0c 尾数部分占24位 xff08 含一个符号位 xff09 设X1 61 256 5 xff0c X2 61 127 256 xff0c
  • DNS的资料

    如下是部分资料 DNS 原理入门什么是DNS xff1f 36 张图详解 DNS xff1a 网络世界的导航Linux DNS 查询剖析 xff08 第一部分 xff09 Linux DNS 查询剖析 xff08 第二部分 xff09 Li
  • 无法从静态上下文中引用非静态方法

    原因 xff1a 1 用static修饰的方法称为静态方法 xff0c 修饰变量则为静态变量 xff0c 又分别叫做类方法或者类变量 静态方法中不能直接调用非静态方法 因为非静态方法不是独立存在的 xff0c 它是依附于对象存在 即只有申明
  • Python实现端口扫描

    原理 向远端指定服务器的某一个端口提出建立一个连接的请求 xff0c 如果对方有此项服务 xff0c 就会应答 xff0c 如果对方没有此项服务时 xff0c 对方就无应答 利用这个原理 xff0c 我们可以指定一些端口 xff0c 然后针
  • 使用oh-my-posh美化

    记录安装Windows Terminal Preview和oh my posh的过程 安装 Windows Terminal Preview 打开微软商店 Microsoft Ware 搜索Windows Terminal Preview下
  • ubuntu配置ssh免密码登录后仍要输入密码的解决方法

    密钥登录常规方法 xff1a 1 在server生成密钥对 xff0c 不同user用户在自己用户目录下生成一次 ssh keygen 此时在 ssh 目录下生成了公钥 xff08 id rsa pub xff09 和私钥 id rsa 2
  • Mac下Kali Linux虚拟机初始化及Royal TSX连接Kali

    摘要 xff1a 本篇主要是介绍了PD17上安装Kali linux后的一些相关设置 xff0c 包括网卡配置 换源 安装Parallel Tools等 xff0c 以及因为xshell只支持windows xff0c 故采用Royal T
  • win7下安装配置Tomcat 7.0

    1 Java环境搭建 这里需要安装JDK及其环境变量的配置 具体过程可以参考我之前写的Java开发环境搭建 一文 xff0c 此处不再赘述 2 Tomcat 7 0安装及配置 2 1 Tomcat 7 0下载及安装 Tomcat 7 0 的
  • Linux -bash java command not found 解决方法

    在Linux环境下安装JDK之后 使用java 测试是否安装成功 结果报错 bash java command not found 解决方案如下 1 查看Linux环境自带JDK 使用命令 rpm qa grep gcj 显示内容其中包含相
  • npm WARN npm npm does not support Node.js v14.16.0 npm WARN npm You should probably upgrade to a new

    npm WARN npm npm does not support Node js v14 16 0 npm WARN npm You should probably upgrade to a newer version of node a
  • 毕业设计 - 题目 :基于大数据的疫情数据分析及可视化系统

    文章目录 1 前言2 开发简介3 数据集 weibo json 新浪微博实时热搜前50的数据ProvinceData json 省市疫情详情 4 实现技术 4 1 系统架构4 2 开发环境4 3 疫情地图 4 3 1 填充图 Choropl
  • Qt知识点梳理 —— 获取设备CPU,java技术栈

    WMIC指令 在Windows环境下 xff0c 我们可以通过使用WMIC获取设备的硬件信息 xff0c 如下 xff1a wmic cpu get Name 获取CPU名称 wmic cpu get NumberOfCores 获取CPU