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

2023-11-14

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

一、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 api
    bool 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_VER
    return QString::fromUtf16((const ushort *)str.c_str());
#else
    return 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;
    }
    else
        return 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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • cx_freeze:QODBC 驱动程序未加载

    我的 python 应用程序如下所示 test py from PyQt4 import QtCore from PyQt4 import QtGui from PyQt4 import QtSql import sys import at
  • 调整 QML 图像显示尺寸

    我有一个带有嵌套的 QML 窗口RowLayout 在内排我有两个图像 来源 png这些图像的文件 故意 相当大 当我尝试设置height这些图像上的属性使它们变小 但它们仍然被画得很大 Desired Appearance Actual
  • setContextProperty 和对象的 setProperty 之间的区别

    我现在真的很困惑 有什么区别 QQmlApplicationEngine engine engine rootContext setContextProperty myObject userData and object gt setPro
  • qt项目如何设置安装路径

    我正在寻找与 qmake configure prefix 等效的内容 基本上 我想覆盖默认的安装 部署目录 这是如何用命令行 qmake 指定的 我还使用 QtCreator 构建了很多 gui 项目 并且我想知道如何在 QtCreato
  • Qt 支持在 QIcon 中为 SVG 着色

    看来 Qt 不支持 SVG 中路径标签上的描边 填充选项
  • QTableView 中的虚拟列?

    我开始学习 Qt4 模型 视图编程 我有初学者问题 我有一个简单的应用程序 其中显示 sqlite 表QTableView class Model QtSql QSqlTableModel def init self parent None
  • MAC 上的 QT/C++ - 未设置应用程序图标

    我正在努力解决的奇怪问题 在与我的 pro QT 项目文件相同的文件夹中 我有一个 Resources myIcon png 我试图将其设置为我构建的应用程序的图标 在 OSX 上运行 我阅读了文档 它建议在 pro 文件中添加 ICON
  • Qt/c++ 随机字符串生成[重复]

    这个问题在这里已经有答案了 我正在创建一个应用程序 需要生成多个随机字符串 几乎就像一个由一定长度的 ASCII 字符组成的唯一 ID 这些字符混合有大写 小写 数字字符 有没有 Qt 库可以实现这一点 如果没有 在纯 C 中生成多个随机字
  • 如何在 C++ 运行时更改 QML 对象的属性?

    我想在运行时更改 QML 对象的文本 我尝试如下 但文本仍然为空 这是后端类 class BackEnd public QObject Q OBJECT Q PROPERTY QString userFieldText READ userF
  • Qt Creator:如何区分 win32 和 win64

    我必须在 pro 文件中执行类似的操作 win32 LIBS L 3rdparty libusb win32 lib msvc llibusb else win64 LIBS L 3rdparty libusb win32 lib msvc
  • 如何创建QWidget的屏幕截图?

    我在 Qt Creator 中做作业 在其中绘制 QWidget 并且需要保存此 QWdiget 的某些部分 我试图解决这个问题 QPixmap pixmap pixmap copy rectangle rectangle is part
  • Qt中如何获取鼠标在屏幕上的位置?

    我想获取屏幕上的鼠标坐标 我怎样才能在 Qt 中做到这一点 在 Windows 上 使用 C 我正在做类似答案中建议的事情对于这个问题 https stackoverflow com q 11737665 1420197 正如文档所述 QC
  • QTextEdit.find() 在 Python 中不起作用

    演示问题的简单代码 usr bin env python import sys from PyQt4 QtCore import QObject SIGNAL from PyQt4 QtGui import QApplication QTe
  • 在 Qt5 中,是否需要 Q_INVOKABLE 来从 QML 调用公共 QObject 函数?

    我刚刚意识到我可以调用暴露于 QML 的对象的几乎任何函数 现在我对 Q INVOKABLE 很好奇 Qt5docs http doc qt io qt 5 qtqml cppintegration exposecppattributes
  • 如何创建用于 QML 的通用对象模型?

    我想知道是否有任何宏或方法如何将 Qt 模型注册为 QObject 的属性 例如 我有AnimalModel http doc qt io qt 5 qtquick modelviewsdata cppmodels html qabstra
  • 重定向 python 交互式帮助()

    我正在为使用 Qt 的应用程序开发交互式 python shell 但是我似乎无法获得重定向的交互式帮助 我的 python 代码中有这个 class OutputCatcher def init self self data def wr
  • 与 Qt 项目的静态链接

    我有一个在 Visual Studio 2010 Professional 中构建的 Qt 项目 但是 当我运行它 在调试或发布模式下 时 它会要求一些 Qt dll 如果我提供 dll 并将它们放入 System32 中 它就可以工作 但
  • 如何获取 QTableView 的标题列表?

    我有一个QTableView我的对话框中的对象 我需要访问该表的水平标题并将它们放入QStringList object 尽管进行了大量搜索 但我在 Qt 文档中找不到如何获取此标头列表 编辑 我发现的最接近的地方是this https w
  • QFileDialog::getSaveFileName 和默认的 selectedFilter

    我有 getSaveFileName 和一些过滤器 我希望当用户打开 保存 对话框时选择其中之一 Qt 文档说明如下 可以通过将 selectedFilter 设置为所需的值来选择默认过滤器 我尝试以下变体 QString selFilte
  • 将 gnuplot 嵌入现有 QtWidget 中

    我正在用 C 创建一个 伪 实时绘图应用程序 使用 gnuplot 作为绘图后端 我的要求之一是绘图必须位于现有窗口内 而不是有一个单独的绘图窗口 gnuplot 默认为 Gnuplot 有一个选项可以指定 Qt 小部件 ID 这似乎适合我

随机推荐

  • 三菱plc指令详细解析

    一 顺控指令 1 触点指令 00 LD 逻辑操作开始 01 LDI 逻辑非操作开始 02 AND 逻辑乘 03 ANI 逻辑乘非 04 OR 逻辑加 05 ORI 逻辑加非 2 连接指令 06 ANB AND逻辑块与 07 ORB OR逻辑
  • 一张图正则表达式

    一张图正则表达式
  • VW ware安装Ubuntu虚拟机及环境配置

    实验前准备 VMware 官网下载 Ubuntu XXX iso 文件过大阿里云镜像下载 熟悉那种Linux内核就下载那种 这个不会影响集群的搭建 https pan baidu com s 1tFvCA4PmNC2tZN7Yp2BkZQ
  • vue组件销毁重置详解

    v if方式 key方式 destroy v if方式
  • 在Windows下使用MingGW[GCC+OpenMP]和CodeBlocks开发多核应用基本环境配置

    转自 http blog csdn net danny xcz article details 3332251 从06年开始 多核开发已经越来越多的成为所有应用设计必须考虑的问题 我使用MingGW CodeBlocks来测试OpenMP多
  • 浪涌保护电路设计

    浪涌保护电路设计 一 什么是浪涌 二 浪涌的产生 2 1浪涌的产生 2 2浪涌的传输介质 2 3IEC定义的浪涌标准 三 浪涌保护电路 一 什么是浪涌 浪涌是一种瞬变干扰 在某种特定条件下由电网造成的瞬间电压超出额定电压的范围 通常这个瞬变
  • Docker(三) 创建Docker镜像

    一 在Docker中拉取最基本的Ubuntu系统镜像 搜索Ubuntu镜像 Explore Docker s Container Image Repository Docker Hub 下载镜像 docker pull ubuntu 22
  • PS解决“无法使用快速选择,因为没有足够内存(RAM)”

    PS解决 无法使用快速选择 因为没有足够内存 RAM win R打开命令行 在输入框输入 regedit 点击确定 找到目录HKEY CURRENT USER Software Adobe Photoshop 点击对应版本Photoshop
  • 万维网服务器协议提供web,万维网的HTTP和FTP协议.doc

    万维网的HTTP和FTP协议 doc 万维网的HTTP和FTP协议 摘 要 20世纪40年代以来 人们就梦想能拥有一个世界性的信息库 在这个信息库中 信息不仅能被全球的人们存取 而且能轻松地链接到其他地方的信息 使用户可以方便快捷地获得重要
  • PyQt5 自动计算阵列矩阵

    说实话 其实我当时听懂了 真正写代码的时候越写越懵逼 所以还是记录下来吧 另外有兴趣了解的同学还是看老师的视频解说比较好 想学PyQT的同学强烈建议看这个老师的视频 由浅入深 从PyQT最基本的开始教学 非常棒 bilibili https
  • 第五章:平衡二叉树

    系列文章目录 文章目录 系列文章目录 前言 1 平衡二叉树的介绍 1 1 AVL树的概念 1 2 AVL树的性质 2 平衡二叉树的插入 2 1 平衡二叉树的插入步骤 2 2 平衡二叉树的旋转 2 2 1 左单旋 2 2 2 右单旋 2 2
  • /etc/vsftpd.conf详解

    匿名权限控制 anonymous enable YES 是否启用匿名用户no anon password YES 匿名用户login时不询问口令下面这四个主要语句控制这文件和文件夹的上传 下载 创建 删除和重命名 anon upload e
  • 4399笔试题

    1 冒泡排序的时间复杂度 2 有无序数字5000个 用什么算法能快速的找出最大的前50个数字 3 比如有10个台阶 一直青蛙一次只能跳一个或者二个台阶 问青蛙从第一个台阶开始跳最多有几种跳法 4 从区间 2 2 中随意取出二个实数 它们的和
  • 解析顶点着色器和片元着色器

    管线 也称渲染管线 因为 OpenGL ES在渲染处理过程中会顺序执行一系列操作 这一系列相关的处理阶段就被称为OpenGL ES 渲染管线 OpenGL ES 渲染过程就如流水线作业一样 这样的实现极大地提高了渲染的效率 如图就是 Ope
  • C/C++遍历文件夹下所有文件或文件夹名称(使用Windows API)

    目录 前言 实现思路 源代码 前言 在项目开发中 经常需要去遍历某一个文件夹下的一些资源文件 为了避免重复造轮子 刚好在此记录一下 实现思路 1 给出一个文件夹名称 2 获取文件句柄 3 过滤掉 和 上一级和当前目录 4 通过获取 find
  • (一)抖音快手短视频去水印原理分析

    抖音 一 首先获取分享短链接 一 我打12360他竟告诉我不可以订票 洛阳综合保税区 海关 https v douyin com JrA4H4N 复制此链接 打开 抖音短视频 直接观看视频 短链接 https v douyin com Jr
  • nginx负载均衡

    目录 负载均衡 nginx的七层代理和四层代理 七层代理的就是http请求和响应 四层代理与七层代理之间的区别 正向代理与反向代理 负载均衡 upstream 算法 算法总结 stream 负载均衡 通过反向代理来实现 nginx的七层代理
  • 修改 Ztree 节点的图标 ( icon 与 iconSkin)

    1 使用 icon 首先 进入 Ztree 官网 查看 Api http www treejs cn v3 api php 你可以下载官网上的ztree压缩包 在里面有 自定义图标的实例代码 或进入这个地址下载 https download
  • Vue2项目练手——通用后台管理项目第八节

    Vue2项目练手 通用后台管理项目 菜单权限功能 tab js Login vue CommonAside vue router index js 权限管理问题解决 router tab js CommonHeader vue main j
  • QT获取电脑系统,主板型号,CPU型号,硬盘型号,内存大小等相关信息(一)通过CMD和WMIC命令行的方式

    QT通过CMD和WMIC命令行的方式获取电脑系统 主板型号 CPU型号 硬盘型号等相关信息 包括使用diskpart wmic DIrectX等 目录导读 一 DIrectX诊断工具 打开窗体查看 命令行输出 二 直接CMD输入SYSTEM