반응형

*C# WMI 를 이용한 실시간 메모리 사용량 체크 (Memory Check) 예제...

- WMI 를 사용하기 위해 참조 -> System.Management dll 을 추가 -> 소스 코드 using System.Management

 

Main

 

전체 소스 코드

Form1.cs

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using System.Management; 

namespace CSharp_WMIMemory
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //Start
            timer1.Start();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //Stop
            timer1.Stop();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            int itotalMem = 0;		// 총 메모리 KB 단위
            int itotalMemMB = 0;	    // 총 메모리 MB 단위
            int ifreeMem = 0;		// 사용 가능 메모리 KB 단위
            int ifreeMemMB = 0;	    // 사용 가능 메모리 MB 단위

            ManagementClass cls = new ManagementClass("Win32_OperatingSystem");
            ManagementObjectCollection moc = cls.GetInstances();

            foreach (ManagementObject mo in moc)
            {
                itotalMem = int.Parse(mo["TotalVisibleMemorySize"].ToString());
                ifreeMem = int.Parse(mo["FreePhysicalMemory"].ToString());
            }

            itotalMemMB = itotalMem / 1024;	// 총 메모리 MB 단위 변경	
            ifreeMemMB = ifreeMem / 1024;	// 사용 가능 메모리 MB 단위 변경

            //Progressbar Max Setting...
            pbTotal.Maximum = itotalMemMB;
            pbFree.Maximum = itotalMemMB;
            pbUse.Maximum = itotalMemMB;

            //Label Display
            lblTotal.Text = itotalMemMB.ToString();
            lblFree.Text = ifreeMemMB.ToString();
            lblUse.Text = (itotalMemMB - ifreeMemMB).ToString();

            //Progressbar Display
            pbTotal.Value = itotalMemMB;
            pbFree.Value = ifreeMemMB;
            pbUse.Value = (itotalMemMB - ifreeMemMB);

        }

    }
}

 

 

*예제 결과

 

아래의 그림과 같이 NoxPlayer 를 켜고 난 뒤 게임을 실행 하면서 메모리 사용량이 변화 하는 것을 WMI 를 이용한

프로그램과 작업관리자 화면 을 동시에 비교 해 봤을 때 변화 하는 것을 볼 수 있습니다. 물론 단위가 작업관리자는 GB 로 나오고 WMI 를 이용해 만든 프로그램은 MB 이지만 1024를 한번 더 나누게 되면 단위는 GB 가 됩니다.

 

또한 소스 코드는 int 형 변수로 구현 했지만  Double 형 변수를 써서 구현 하게 되시면 작업 관리자 화면 처럼 소수점 2번째 자리 까지 표현 하면서 나타낼 수 있습니다.

 

 

 

 

https://kdsoft-zeros.tistory.com/169

 

[VBNET] [WMI] 실시간 메모리 사용량 체크 (Memory Check) - Progressbar

*VBNET WMI 를 이용한 실시간 메모리 사용량 체크 (Memory Check) 예제... - WMI 를 사용하기 위해 참조 -> System.Management dll 을 추가 -> 소스 코드 Imports System.Management 전체 소스 코드 Form1.vb Imp..

kdsoft-zeros.tistory.com

 

반응형

+ Recent posts