상세 컨텐츠

본문 제목

프로그램 중복 실행 방지

C#

by 탑~! 2014. 8. 7. 16:30

본문

1. Mutex를 사용하는 방법


프로젝트의 시작점에서


1
2
3
4
5
6
7
8
9
10
11
12
bool isNew = true;
Mutex mutex = new Mutex(true, "특정문자열", out isNew);
 
if (isNew == false)
{
    // 중복실행시 처리
}
else
{
    // 실행
    mutex.ReleaseMutex();
}

2. GetProcessesByName을 사용하는 방법


프로젝트의 시작점에서


1
2
3
4
5
6
7
8
9
10
Process[] procs = Process.GetProcessesByName("프로세스이름");
 
if (procs.Length > 1)
{
    // 중복실행시 처리
}
else
{
    // 실행
}


3. GetProcesses를 사용하는 방법


프로젝트의 시작점에서


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int cnt = 0;
 
Process[] procs = Process.GetProcesses();
 
foreach(Process p in procs)
{
    if(p.ProcessName.Equals(프로세스이름) == true)
    {
        cnt++;
    }
}
 
if (cnt > 1)
{
    // 중복실행시 처리
}
else
{
    // 실행
}


4. FindWindow를 사용하는 방법


1
2
[System.Runtime.InteropServices.DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);


위와 같이 FindWindow Win32API를 P/Invoke를 사용하기 위해 정의한다.


그리고 프로젝트의 시작점에서


1
2
3
4
5
6
7
8
9
10
IntPtr hWnd = FindWindow(null, 타이틀명);
 
if (hWnd != IntPtr.Zero)
{
    // 중복실행시 처리
}
else
{
    // 실행
}


위와 같이 처리하면 중복해서 실행되지 않는다.

'C#' 카테고리의 다른 글

Simple Network Time (NTP) Protocol Client  (0) 2014.10.15
File Watcher  (0) 2014.09.02
time.windows.com 동기화  (0) 2014.06.18
c# 동영상 녹화  (0) 2014.05.13
다국어  (0) 2014.03.31

관련글 더보기