반응형
*C# WMI 를 이용한 실시간 메모리 사용량 체크 (Memory Check) 예제...
- WMI 를 사용하기 위해 참조 -> System.Management dll 을 추가 -> 소스 코드 using System.Management
전체 소스 코드
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
반응형
'C# Programming' 카테고리의 다른 글
[C#] 설치된 닷넷프레임워크 버전 리스트 조회 (0) | 2020.03.23 |
---|---|
[C#] [API] 제어판 기본 프린터(Default Printer) 변경 (0) | 2020.03.19 |
[C#] 제어판 프린터(Printer) 목록 불러오기 (0) | 2020.03.13 |
[C#] [API] Mouse Cursor Move And AutoClick Event (0) | 2020.03.11 |
[C#] [API] 마우스 커서 좌표 얻어 오기 (0) | 2020.03.09 |