Windows下Qt讀取系統(tǒng)的內(nèi)存、CPU、GPU等使用信息的示例代碼
一、前言
在當今計算機應(yīng)用廣泛的領(lǐng)域中,了解系統(tǒng)的內(nèi)存、CPU和GPU使用情況是非常重要的。對于開發(fā)人員和系統(tǒng)管理員來說,準確獲取這些信息可以幫助他們優(yōu)化軟件性能、診斷問題并做出相應(yīng)的調(diào)整。在Windows平臺上實現(xiàn)這一目標會涉及到調(diào)用Windows系統(tǒng)API,使用合適的工具和庫來獲取所需的信息。
本文將介紹如何使用Qt和Windows API來讀取系統(tǒng)的內(nèi)存、CPU和GPU使用詳細信息。將提供一個完整的示例代碼,展示了如何使用這些技術(shù)來獲取系統(tǒng)的關(guān)鍵性能指標。通過閱讀本文,將學(xué)習如何使用Qt框架和Windows API來實現(xiàn)這些功能,以及如何根據(jù)需求進行擴展和定制。
二、獲取系統(tǒng)的配置信息
? #include <QApplication> ? #include <QtWidgets/QApplication> #include <QtWidgets/QMainWindow> #include <QtWidgets/QLabel> #include <QSysInfo> #include <QProcess> #include <QDebug> ? #include <QDebug> #include <Windows.h> ? ? #pragma execution_character_set("utf-8") ? int main(int argc, char *argv[]) { QApplication a(argc, argv); ? ? QMainWindow window; window.resize(400, 300); ? QLabel *label = new QLabel(&window); label->setAlignment(Qt::AlignCenter); label->setWordWrap(true); window.setCentralWidget(label); ? // 獲取系統(tǒng)內(nèi)存信息 QString memoryInfo = "Memory Information:\n"; ? MEMORYSTATUSEX memoryStatus; memoryStatus.dwLength = sizeof(memoryStatus); if (GlobalMemoryStatusEx(&memoryStatus)) { memoryInfo+=QString("Total Physical Memory: %1 %2\n").arg(memoryStatus.ullTotalPhys / (1024 * 1024)).arg("MB"); memoryInfo+=QString("Available Physical Memory: %1 %2\n").arg(memoryStatus.ullAvailPhys / (1024 * 1024)).arg("MB"); memoryInfo+=QString("Total Virtual Memory: %1 %2\n").arg(memoryStatus.ullTotalVirtual / (1024 * 1024)).arg("MB"); memoryInfo+=QString("Available Virtual Memory: %1 %2\n").arg(memoryStatus.ullAvailVirtual / (1024 * 1024)).arg("MB"); } else { memoryInfo+=QString("無法獲取內(nèi)存使用情況信息。\n"); } ? // 獲取CPU信息 QString cpuInfo = "CPU Information:\n"; QProcess cpuProcess; cpuProcess.start("wmic cpu get Name"); cpuProcess.waitForFinished(); QString cpuResult = cpuProcess.readAllStandardOutput(); QString cpuName = cpuResult.split("\n").at(1).trimmed(); cpuInfo += "Model: " + cpuName + "\n"; ? // 獲取GPU信息 QString gpuInfo = "GPU Information:\n"; QProcess gpuProcess; gpuProcess.start("wmic path win32_VideoController get Name"); gpuProcess.waitForFinished(); QString gpuResult = gpuProcess.readAllStandardOutput(); QStringList gpuList = gpuResult.split("\n", QString::SkipEmptyParts); for (int i = 1; i < gpuList.size(); i++) { QString gpuName = gpuList.at(i).trimmed(); gpuInfo += "GPU " + QString::number(i) + ": " + gpuName + "\n"; } ? // 在標簽中顯示系統(tǒng)信息 QString systemInfo = memoryInfo + "\n" + cpuInfo + "\n" + gpuInfo; label->setText(systemInfo); ? window.show(); ? ? //Widget w; //w.show(); return a.exec(); }
三、wmic
wmic
是Windows Management Instrumentation Command-line(WMI命令行)實用工具的縮寫。它提供了一個命令行界面,可以通過WMI接口與操作系統(tǒng)進行交互和管理。以下是對wmic
的詳細介紹:
【1】基本概念:Windows Management Instrumentation(WMI)是微軟提供的一種標準化的系統(tǒng)管理技術(shù),允許開發(fā)人員和管理員使用編程方式來監(jiān)視和控制Windows操作系統(tǒng)上的資源。WMI提供了一個信息框架,以獲取有關(guān)計算機硬件、軟件和操作系統(tǒng)配置的詳細信息。
【2】功能:wmic
允許用戶通過命令行執(zhí)行各種系統(tǒng)管理任務(wù),包括查詢、修改和監(jiān)視操作系統(tǒng)中的各種設(shè)置和資源,如進程、服務(wù)、磁盤驅(qū)動器、網(wǎng)絡(luò)適配器等。它還可以與遠程計算機通信,并將結(jié)果輸出為文本、XML或HTML格式。通過wmic
,你可以輕松地獲取系統(tǒng)信息、執(zhí)行管理任務(wù)和編寫自動化腳本。
【3】語法和用法:wmic
的基本語法是wmic <命令> [參數(shù)]
。
常用的命令包括:
wmic os
:獲取操作系統(tǒng)的詳細信息。wmic cpu
:獲取CPU的信息。wmic process
:獲取正在運行的進程列表。wmic service
:獲取系統(tǒng)服務(wù)的信息。wmic logicaldisk
:獲取邏輯磁盤驅(qū)動器的信息。wmic nicconfig
:獲取網(wǎng)絡(luò)適配器配置的信息。
示例用法:以下是使用wmic
命令獲取操作系統(tǒng)信息和CPU信息的示例:
wmic os get Caption, Version, OSArchitecture
:獲取操作系統(tǒng)的名稱、版本和體系結(jié)構(gòu)。wmic cpu get Name, MaxClockSpeed, Manufacturer
:獲取CPU的名稱、最大時鐘速度和制造商。
對于更復(fù)雜的查詢和操作,可以使用WQL(WMI查詢語言)來結(jié)合wmic
命令。WQL類似于SQL,可以用于過濾和排序數(shù)據(jù),并執(zhí)行高級的系統(tǒng)管理任務(wù)。
以上就是Windows下Qt讀取系統(tǒng)的內(nèi)存、CPU、GPU等使用信息的方法詳解的詳細內(nèi)容,更多關(guān)于Windows下Qt讀取系統(tǒng)信息的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C語言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
這篇文章主要介紹了C語言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法,涉及C語言針對數(shù)組的遍歷與判斷技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07c++ 求數(shù)組最大最小值函數(shù)的實現(xiàn)
這篇文章主要介紹了c++ 求數(shù)組最大最小值函數(shù)的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07