본문 바로가기

.NET/C#

C# 프로세스 목록 알아오기

728x90
반응형
이번에는 현재 컴퓨터에서 쓰고 있는 프로세스가 어떤것들이 있는지를 알아오는 프로그램을 만들어보겠습니다. winForm으로 멋있고 이쁜 프로그램을 만들고 싶지만 간단히 테스트 하기 위해서 간단히 콘솔로 알아보도록 하겠습니다.

System.Diagmostics.Process 클래스의 GetProcess를 이용하면 현재 컴퓨터의 모든 프로세스의 정보를 알아올 수 있습니다.
그럼 간단히 프로세스이름, 프로세스 시작시간, 프로세스 PID, 메모리 사용량을 가져오는 프로그램을 만들어 보겠습니다.

using System;

using System.Collections.Generic;

using System.Diagnostics;

 

namespace ProcessInfoWrite

{

    class Program

    {

        static void Main(string[] args)

        {

            try

            {

                Process[] allProc = Process.GetProcesses();    //시스템의 모든 프로세스 정보 출력

                int i = 1;

                Console.WriteLine("****** 모든 프로세스 정보 ******");

                Console.WriteLine("현재 실행중은 모든 프로세스 수 : {0}", allProc.Length);

                foreach (Process p in allProc)

                {

                    Console.WriteLine("***** {0}번째 프로세스 ******", i++);

                    WriteProcessInfo(p);

                    Console.WriteLine();

                }

            }

            catch (Exception e)

            {

                Console.WriteLine(e.Message);

            }

        }

 

        private static void WriteProcessInfo(Process processInfo)

        {

            Console.WriteLine("Process : {0}", processInfo.ProcessName);

            Console.WriteLine("시작시간 : {0}", processInfo.StartTime);

            Console.WriteLine("프로세스 PID : {0}", processInfo.Id);

            Console.WriteLine("메모리 : {0}", processInfo.VirtualMemorySize);

        }

    }

}


Process.GetProcess() 로 현재 실행중인 모든 프로세스의 정보를 가져올 수가 있습니다. 그것을 간단히 화면에 뿌려준 것이죠.

실행화면은 다음과 같습니다.



참 간단하게 현재 실행중인 프로세스의 정보를 가져올 수 있죠. 또 가끔은 현재 실행되고 있는 자기 자신 프로세스의 정보를 가져올 필요도 있을때가 있습니다. 그건 Process.GetCurrentProcess()를 이용하면 간편하게 가져올 수 있습니다.

예제 코드를 한번 보시죠.

using System;

using System.Collections.Generic;

using System.Diagnostics;

 

namespace ProcessInfoWrite

{

    class Program

    {

        static void Main(string[] args)

        {

            try

            {

                Process proc = Process.GetCurrentProcess();

                Console.WriteLine("****** 모든 프로세스 정보 ******");

                WriteProcessInfo(proc);

            }

            catch (Exception e)

            {

                Console.WriteLine(e.Message);

            }

        }

 

        private static void WriteProcessInfo(Process processInfo)

        {

            Console.WriteLine("Process : {0}", processInfo.ProcessName);

            Console.WriteLine("시작시간 : {0}", processInfo.StartTime);

            Console.WriteLine("프로세스 PID : {0}", processInfo.Id);

            Console.WriteLine("메모리 : {0}", processInfo.VirtualMemorySize);

        }

    }

}


보시는 것과 같이 전체 프로세스를 가져오는 프로그램과 바뀐부분은 많지 않습니다. 그냥 프로세스 정보를 GetCurrentProcess() 메소드를 이용해서 가져왔을 뿐이죠. 그리고 실행 결과는 다음과 같습니다.


이번에는 컴퓨터에서 실행되고 있는 프로세스의 정보를 가져오는 프로그램을 만들어 봤습니다. 이코드를 이용하면 프로세스를 강제 종료하는 프로그램같은것도 만들 수 있겠죠. 메모리 정리도 가능할까요? ㅎ


더 많은 응용을 해보시도록 하시고요. 다음 시간에는 스레드 정보를 출력하는 것을 알아보도록 하겠습니다. 감사합니다



출처 : C# Programming Bible

728x90
반응형

'.NET > C#' 카테고리의 다른 글

try~catch문(예외처리)  (3) 2010.10.14
스레드 정보 알아오기...  (0) 2010.10.12
C# 소수(Prime Number) 찾기  (0) 2010.10.12
Thread 란?  (0) 2010.10.10
Windows Forms의 시작  (2) 2010.01.19
C# Event  (0) 2010.01.18
C# delegate  (0) 2010.01.14
FileAndDirectory  (0) 2010.01.12
C# File Input/Output  (1) 2009.12.24
C# Collection  (0) 2009.12.21