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
반응형
'프로그래밍 > c#' 카테고리의 다른 글
[c#] string.Format 서식 (0) | 2021.01.26 |
---|---|
[Tip] Visual Studio 단축키 (0) | 2021.01.19 |
[c#] STAThread/COM(Component Object Model) (0) | 2021.01.12 |
[c#] 쓰레드 동기화 클래스 3(AutoResetEvent, ManualResetEvent, CountdownEvent) (0) | 2019.10.08 |
[c#] 쓰레드 동기화 클래스 2(Mutex, Semaphore) (0) | 2019.10.08 |
댓글