본문 바로가기
프로그래밍/C#, WPF, .Net

[WPF] 프로세스가 실행 중인지 확인 방법, 프로세스 정보 가져오는 방법 (GetProcessesByName, find/get process windows title)

by GhostWeb 2020. 5. 16.
반응형


이번에는 해당 프로세스가 실행 중인지 알아보고 해당 프로세스의 정보를 가져오는 방법에 대해서 알아보도록 할게요.


- 설명

public static System.Diagnostics.Process[] GetProcessesByName (string processName);

Process.GetProcessesByName("검색할 프로세스 이름");

네임스페이스 : System.Diagnostics 

어셈블리 : System.Diagnostics.Process.dll



- 코드

다음과 같이 Process.GetProcessesByName()를 이용하면 현재 시스템에서 실행 중인 프로세스 명이 있나 검색하고 Process[]에 담아주니 이를 이용하여 원하시는 작업을 처리하시면 돼요. 


밑의 소스는 notepad라고 윈도우의 기본 메모장을 검색하여 프로세스 이름, 타이틀을 출력하도록 만든 예입니다.


1
2
3
4
5
6
Process[] ProcessList = Process.GetProcessesByName("notepad");
foreach(Process process in ProcessList)
{
    Console.WriteLine("ProcessName : {0} / MainWindowTitle : {1}"
        process.ProcessName, process.MainWindowTitle);
}
cs


예제로 현재 내 PC에서 실행 중인 프로세스를 검색하고 싶으신 분은 작업 관리자(Ctrl+Alt+Del, 또는 작업 표시줄에서 마우스 오른쪽 클릭 - 작업 관리자)를 실행하여 현재 실행 중인 프로세스 명을 입력해보세요.



윈도우10 작업 관리자는 상단 탭에서 마우스 오른쪽 클릭을 하면 나오는 메뉴에서 프로세스 이름을 클릭하여 체크되어 있어야 프로세스 이름이 표시되며 이를 입력해서 테스트 해보세요.

다른 버전의 윈도우(7, 8.1 등)도 프로세스 명이 나오지 않는다면 위처럼 해보세요.




- 결과


ProcessName : notepad / MainWindowTitle : *제목 없음 - Windows 메모장

ProcessName : notepad / MainWindowTitle : 본문.txt - Windows 메모장


현재 총 2개의 메모장을 실행 중인데 2개의 프로세스 이름은 같지만, MainWindowTitle(타이틀 바 이름)이 다른 것을 확인할 수 있어요.


이외에도 프로세스의 시작 시간 등 프로세스에 다양한 정보를 확인할 수 있으니, 더 자세한 내용이 궁금하시면 Process 선택하고 F1(MSDN), F12를 눌러 어떠한 함수 등을 지원하는 알아보세요.


Process.GetProcessesByName()를 이용해서 프로그램 실행 전에 이미 프로그램이 실행 중이라면 실행되지 않게 하는 프로그램 중복 실행 방지로도 사용할 수 있어요. 


그럼 이상으로 포스팅을 마치며 오늘도 즐거운 코딩하세요.


반응형