本文主要是介绍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命令行的方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!