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

相关文章

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

springboot security使用jwt认证方式

《springbootsecurity使用jwt认证方式》:本文主要介绍springbootsecurity使用jwt认证方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录前言代码示例依赖定义mapper定义用户信息的实体beansecurity相关的类提供登录接口测试提供一

springboot security之前后端分离配置方式

《springbootsecurity之前后端分离配置方式》:本文主要介绍springbootsecurity之前后端分离配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录前言自定义配置认证失败自定义处理登录相关接口匿名访问前置文章总结前言spring boot secu

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

Flutter打包APK的几种方式小结

《Flutter打包APK的几种方式小结》Flutter打包不同于RN,Flutter可以在AndroidStudio里编写Flutter代码并最终打包为APK,本篇主要阐述涉及到的几种打包方式,通... 目录前言1. android原生打包APK方式2. Flutter通过原生工程打包方式3. Futte

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调