Qt 擷取Windows記憶體資訊

來源:互聯網
上載者:User

標籤:

通過調用Windows API來擷取Windows 記憶體資訊,並顯示在介面上,通過與Windows 記憶體管理器對比可以看到結果是正確的。

實現的小工具的介面效果與記憶體管理器對比如下:


實現的完整代碼:

#pragma execution_character_set("utf-8")#ifndef QMEMORYINFO_H#define QMEMORYINFO_H#include <QtWidgets/QWidget>#include <QLabel>#include <QLineEdit>#include <QTimer>class QMemoryInfo : public QWidget{Q_OBJECTpublic:QMemoryInfo(QWidget *parent = 0);~QMemoryInfo();private:void updateInfo();QTimer *m_timer;QLabel *m_memoryUsedLabel;QLabel *m_totalPhysLabel;QLabel *m_availPhysLabel;QLabel *m_totalPageFileLabel;QLabel *m_availPageFileLabel;QLabel *m_totalVirtualLabel;QLabel *m_availVirtualLabel;QLabel *m_availExVirtualLabel;QLineEdit *m_memoryUsedEdit;QLineEdit *m_totalPhysEdit;QLineEdit *m_availPhysEdit;QLineEdit *m_totalPageFileEdit;QLineEdit *m_availPageFileEdit;QLineEdit *m_totalVirtualEdit;QLineEdit *m_availVirtualEdit;QLineEdit *m_availExVirtualEdit;};#endif // QMEMORYINFO_H
#include "qmemoryinfo.h"#include <QGridLayout>#include <windows.h>#include <sysinfoapi.h>QMemoryInfo::QMemoryInfo(QWidget *parent): QWidget(parent){m_memoryUsedLabel = new QLabel(this);m_totalPhysLabel = new QLabel(this);m_availPhysLabel = new QLabel(this);m_totalPageFileLabel = new QLabel(this);m_availPageFileLabel = new QLabel(this);m_totalVirtualLabel = new QLabel(this);m_availVirtualLabel = new QLabel(this);m_availExVirtualLabel = new QLabel(this);m_memoryUsedEdit = new QLineEdit(this);m_totalPhysEdit = new QLineEdit(this);m_availPhysEdit = new QLineEdit(this);m_totalPageFileEdit = new QLineEdit(this);m_availPageFileEdit = new QLineEdit(this);m_totalVirtualEdit = new QLineEdit(this);m_availVirtualEdit = new QLineEdit(this);m_availExVirtualEdit = new QLineEdit(this);m_memoryUsedLabel->setText(QObject::tr("記憶體使用量率:"));m_totalPhysLabel->setText("總實體記憶體:");m_availPhysLabel->setText("可用實體記憶體:");m_totalPageFileLabel->setText("系統提交總數:");m_availPageFileLabel->setText("系統提交數:");m_totalVirtualLabel->setText("總虛擬記憶體:");m_availVirtualLabel->setText("可用虛擬記憶體:");m_availExVirtualLabel->setText("可用擴充虛擬:");m_memoryUsedEdit->setReadOnly(true);m_totalPhysEdit->setReadOnly(true);m_availPhysEdit->setReadOnly(true);m_totalPageFileEdit->setReadOnly(true);m_availPageFileEdit->setReadOnly(true);m_totalVirtualEdit->setReadOnly(true);m_availVirtualEdit->setReadOnly(true);m_availExVirtualEdit->setReadOnly(true);QGridLayout *pLay = new QGridLayout(this);int iLine = 0;pLay->addWidget(m_memoryUsedLabel, iLine, 0, 1, 1);pLay->addWidget(m_memoryUsedEdit, iLine, 1, 1, 3);iLine++;pLay->addWidget(m_totalPhysLabel, iLine, 0, 1, 1);pLay->addWidget(m_totalPhysEdit, iLine, 1, 1, 3);iLine++;pLay->addWidget(m_availPhysLabel, iLine, 0, 1, 1);pLay->addWidget(m_availPhysEdit, iLine, 1, 1, 3);iLine++;pLay->addWidget(m_totalPageFileLabel, iLine, 0, 1, 1);pLay->addWidget(m_totalPageFileEdit, iLine, 1, 1, 3);iLine++;pLay->addWidget(m_availPageFileLabel, iLine, 0, 1, 1);pLay->addWidget(m_availPageFileEdit, iLine, 1, 1, 3);iLine++;pLay->addWidget(m_totalVirtualLabel, iLine, 0, 1, 1);pLay->addWidget(m_totalVirtualEdit, iLine, 1, 1, 3);iLine++;pLay->addWidget(m_availVirtualLabel, iLine, 0, 1, 1);pLay->addWidget(m_availVirtualEdit, iLine, 1, 1, 3);iLine++;pLay->addWidget(m_availExVirtualLabel, iLine, 0, 1, 1);pLay->addWidget(m_availExVirtualEdit, iLine, 1, 1, 3);m_timer = new QTimer(this);connect(m_timer, &QTimer::timeout, this, &QMemoryInfo::updateInfo);m_timer->start(100);}QMemoryInfo::~QMemoryInfo(){}void QMemoryInfo::updateInfo(){MEMORYSTATUSEX memoryInfo;memoryInfo.dwLength = sizeof(memoryInfo);GlobalMemoryStatusEx(&memoryInfo);UINT mb = 1024 * 1024;m_memoryUsedEdit->setText(QString::number(memoryInfo.dwMemoryLoad).append("%"));m_totalPhysEdit->setText(QString::number(memoryInfo.ullTotalPhys / mb));m_availPhysEdit->setText(QString::number(memoryInfo.ullAvailPhys / mb));m_totalPageFileEdit->setText(QString::number(memoryInfo.ullTotalPageFile / mb));m_availPageFileEdit->setText(QString::number(memoryInfo.ullTotalPageFile / mb - memoryInfo.ullAvailPageFile / mb));m_totalVirtualEdit->setText(QString::number(memoryInfo.ullTotalVirtual / mb));m_availVirtualEdit->setText(QString::number(memoryInfo.ullAvailVirtual / mb));m_availExVirtualEdit->setText(QString::number(memoryInfo.ullAvailExtendedVirtual / mb));update();}
交流qq:1245178753

本文地址:http://blog.csdn.net/u011417605/article/details/51564802

源碼下載:http://download.csdn.net/detail/u011417605/9538726

Qt 擷取Windows記憶體資訊

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.