본문 바로가기
프로그래밍/c#

[c#] 프로그램 시작시 중복 체크

by 그래도동 2021. 1. 12.
728x90
반응형
  [DllImport("user32")]
  private static extern bool SetForegroundWindow(IntPtr handle);
  [DllImport("User32")]
  private static extern int ShowWindow(IntPtr hwnd, int nCmdShow);
  [DllImport("User32")]
  private static extern void BringWindowToTop(IntPtr hwnd);
  
   // 중복실행방지 
   var processName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
   var processList = System.Diagnostics.Process.GetProcessesByName(processName);
   // 프로그램 같은 이름이 두 개 이상 존재하면
   if (processList.Length > 1)
   {
       foreach (var process in processList)
       {
       		// 이름으로 찾아서 
            if (processName.Equals(process.ProcessName))
            {
               ShowWindow(process.MainWindowHandle, 5);
               BringWindowToTop(process.MainWindowHandle);
               SetForegroundWindow(process.MainWindowHandle);
               break;
            }
       }
	  // 종료
      Application.Exit();
      return;
  }

  Application.EnableVisualStyles();
  Application.SetCompatibleTextRenderingDefault(false);
  Application.Run(new Start());

프로그램 중복 실행방지 코드

 

프로그램을 하나만 실행시키고 싶을때 자주 쓴다.

728x90
반응형

댓글