QT获取电脑系统,主板型号,CPU型号,硬盘型号,内存大小等相关信息(一)通过CMD和WMIC命令行的方式

本文主要是介绍QT获取电脑系统,主板型号,CPU型号,硬盘型号,内存大小等相关信息(一)通过CMD和WMIC命令行的方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

QT通过CMD和WMIC命令行的方式获取电脑系统,主板型号,CPU型号,硬盘型号等相关信息,包括使用diskpart,wmic,DIrectX等

目录导读

    • 一、DIrectX诊断工具
      • 打开窗体查看
      • 命令行输出
    • 二、 直接CMD输入SYSTEMiNFO
    • 三、WMIC命令查询
      • 1.获取系统盘符
      • 2.获取系统版本
      • 3.获取系统64\32位
      • 4.获取主板型号
      • 5.获取CPU型号
      • 6.获取内存大小
      • 7.获取硬盘型号
    • 四、QT 使用 QProcess 获取返回值
    • 五、QT 使查看GPU型号
    • 六、QT 判断网络是否通畅

一、DIrectX诊断工具

通过使用DIrectX诊断工具来查询硬件信息

打开窗体查看

按下windows+R 输入diskmgmt.msc
显示电脑硬件信息
在这里插入图片描述

命令行输出

//cmd 输入查看具体的命令行信息
Dxdiag /?

在这里插入图片描述
导出诊断信息到txt或xml,例:

dxdiag /dontskip /whql:off /t D:\dxdiag_out.txt
dxdiag /dontskip /whql:off /x D:\dxdiag_out.xml

二、 直接CMD输入SYSTEMiNFO

通过systeminfo查询电脑系统,内存大小,启动盘符信息
在这里插入图片描述

三、WMIC命令查询

通过wmic查询电脑信息。通过wmic /?查询相关属性项,例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.获取系统盘符

Wmic OS get SystemDrive

在这里插入图片描述

2.获取系统版本

Wmic OS get Name

在这里插入图片描述

3.获取系统64\32位

wmic os get osarchitecture

在这里插入图片描述

4.获取主板型号

wmic BaseBoard get Product

在这里插入图片描述

5.获取CPU型号

wmic cpu get Name

在这里插入图片描述

6.获取内存大小

wmic ComputerSystem get TotalPhysicalMemory

在这里插入图片描述

7.获取硬盘型号

WMIC diskdrive get Model

在这里插入图片描述

四、QT 使用 QProcess 获取返回值

以获取 系统盘符为例:

    QProcess Cmd;Cmd.start("Wmic OS get SystemDrive");Cmd.waitForFinished();// 获取输出结果QString result = QString::fromLocal8Bit(Cmd.readAllStandardOutput());// 拆分指令字符串QStringList list = result.split("\r\n");QString letter="??";if(list.count()>=2)letter="当前系统盘符:"+list[1].replace("\r","").trimmed();data=QVariant::fromValue(letter);Cmd.close();return (letter!="??" && letter !="");

五、QT 使查看GPU型号

/获取显卡型号
class LARGE_MODEL_EXPORT GPUV:public Subject
{
public:SINGLETON(GPUV)QString getObjName() override{return "GPUV";}///获取内存大小 异步操作void getGPUVersion(){QtConcurrent::run([=](){by_Api_CreateDXGIFactory();///获取后通知所有观察对象//notify();});}private:///通过windows apibool by_Api_CreateDXGIFactory();};
GPUV::GPUV() {}
GPUV::~GPUV() {}#include <iostream>
#include <vector>
#include <dxgi.h>
#include <dxgi1_2.h>
#pragma comment(lib,"DXGI.lib")QString stdWToQString(const std::wstring &str)
{
#ifdef _MSC_VERreturn QString::fromUtf16((const ushort *)str.c_str());
#elsereturn QString::fromStdWString(str);
#endif
}
bool GPUV::by_Api_CreateDXGIFactory()
{// 定义参数IDXGIFactory * pFactory;IDXGIAdapter * pAdapter;std::vector <IDXGIAdapter*> vAdapters;int iAdapterNum = 0;// 创建一个DXGI工厂HRESULT hr = CreateDXGIFactory(__uuidof(IDXGIFactory), (void**)(&pFactory));if (FAILED(hr))return false;// 枚举适配器while (pFactory->EnumAdapters(iAdapterNum, &pAdapter) != DXGI_ERROR_NOT_FOUND){vAdapters.push_back(pAdapter);++iAdapterNum;}QString description="??";if(iAdapterNum>0){DXGI_ADAPTER_DESC adapterDesc;vAdapters[0]->GetDesc(&adapterDesc);std::wstring aa(adapterDesc.Description);description = stdWToQString(aa);}vAdapters.clear();if(description!="" && description!="??"){data=QVariant::fromValue(description);return  true;}elsereturn false;
}

六、QT 判断网络是否通畅

#include <QLibrary>
typedef bool(*ConnectFun)(int* lpdwFlags, int  dwReserved);NetIswork::NetIswork() {}
NetIswork::~NetIswork() {}bool NetIswork::CheckIsNetworkWorking()
{QLibrary lib("Wininet.dll");if (lib.load()){bool bOnline = false;//是否在线int  flags;//获取dll库中的函数InternetGetConnectedState函数地址`ConnectFun  myConnectFun = (ConnectFun)lib.resolve("InternetGetConnectedState");//判断是否连网bOnline = myConnectFun(&flags, 0);data=QVariant::fromValue(bOnline);return bOnline;}return false;
}

这篇关于QT获取电脑系统,主板型号,CPU型号,硬盘型号,内存大小等相关信息(一)通过CMD和WMIC命令行的方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/372744

相关文章

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

gradle第三方Jar包依赖统一管理方式

《gradle第三方Jar包依赖统一管理方式》:本文主要介绍gradle第三方Jar包依赖统一管理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景实现1.顶层模块build.gradle添加依赖管理插件2.顶层模块build.gradle添加所有管理依赖包

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

判断PyTorch是GPU版还是CPU版的方法小结

《判断PyTorch是GPU版还是CPU版的方法小结》PyTorch作为当前最流行的深度学习框架之一,支持在CPU和GPU(NVIDIACUDA)上运行,所以对于深度学习开发者来说,正确识别PyTor... 目录前言为什么需要区分GPU和CPU版本?性能差异硬件要求如何检查PyTorch版本?方法1:使用命

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

SpringBoot整合mybatisPlus实现批量插入并获取ID详解

《SpringBoot整合mybatisPlus实现批量插入并获取ID详解》这篇文章主要为大家详细介绍了SpringBoot如何整合mybatisPlus实现批量插入并获取ID,文中的示例代码讲解详细... 目录【1】saveBATch(一万条数据总耗时:2478ms)【2】集合方式foreach(一万条数

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.