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