Hello,

kok nae-ga ha-myun an-dweneun MAGIC...🧚

~ 2024.08

[ C# ] 현재 드라이브 사용량 표시

도담 🌱 2019. 1. 28. 14:54

오늘의 목표는 아래의 사진처럼 드라이브 사용량을 표시하는 것이다.



프로그래스바나 라벨에 퍼센트를 표시하는 건 간단하니 핵심코드만 살펴보려고 한다.

우선 타이머를 두어 1초마다 검사하도록 설정한 상태이다 :)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public static int GetHDDPercent(string strTargetDriver = "C:\\")
{
    int nPercent = 0;
    try
    {
        // 드라이브 정보에 엑세스하여 모든 논리 드라이브의 이름을 가져옴
        System.IO.DriveInfo[] drives = System.IO.DriveInfo.GetDrives();
        foreach (System.IO.DriveInfo drive in drives)
        {
            if (drive.Name == strTargetDriver)
            {
                // 드라이브 전체 용량
                int maxc = (int)(drive.TotalSize / 1000000);
                // 사용중인 용량 ( 전체 용량 - 사용 가능한 용량 )
                int cst = (int)((drive.TotalSize - drive.AvailableFreeSpace) / 1000000);
 
                nPercent = (int)((float)((float)cst / (float)maxc) * 100);
            }
        }
    }
    catch (Exception e)
    {
        Trace.WriteLine("Exception : " + e.Message);
    }
 
    return nPercent;
}
cs


위의 코드가 핵심 코드이다.

매개 변수로 드라이버명을 입력받아 퍼센트를 반환하는 함수이다.

사실 그리 어려운게 아니라 주석만 봐도 모두 이해가 될...것이다. 😂

디버깅을 해보면 DriverInfo를 통해 모든 정보를 가져오고 있다. 우리는 이를 잘 요리하면 될 뿐..!


위의 함수를 이용해 가져온 값을 설정해주면 끝 :)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
private void timerCPU_Tick(object sender, EventArgs e)
{
    int nHDD = CCpuUtil.GetHDDPercent("C:\\");
    if (this.nPrevHddC != nHDD)
    {
        this.Invoke(new MethodInvoker(delegate ()
        {
            try
            {
                //프로그래스 바 설정
                toolStripProgressBar1.Value = nHDD;
                // 퍼센트 
                toolStripStatusLabelHddC.Text = nHDD.ToString() + "%";
            }
            catch (Exception ee)
            {
                Trace.WriteLine(ee.Message);
            }
 
        }));
        this.nPrevHddC = nHDD;
    }
}
cs