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{ // 실행} |
위와 같이 처리하면 중복해서 실행되지 않는다.
728x90
반응형
'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 |