This code is used to prevent Multiple instances of same application.I googled
a day for this.
//Add these References
using System.Threading;
using
System.Reflection;
using
System.Runtime.InteropServices;
Simple way to Prevent Multiple Instance.Write this code in Program.cs,
[STAThread]
static
void Main()
{
bool NewWindow;
Mutex Mut = new Mutex(true, "YourApplicationName", out
NewWindow);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if
(!NewWindow)
return;
Application.Run(new Form1());
GC.KeepAlive(Mut);
}
This is the another way,
[STAThread]
static
void Main()
{
bool NewWindow;
Mutex Mut = new Mutex(true, "YourApplicationName", out
NewWindow);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if
(!NewWindow)
{
IntPtr hWnd =
FindWindow("WindowsForms10.Window.8.app3", "YourApplicationName");
if (hWnd != IntPtr.Zero)
{
WINDOWPLACEMENT placement = new
WINDOWPLACEMENT();
placement.length =
Marshal.SizeOf(placement);
GetWindowPlacement(hWnd, ref
placement);
if (placement.showCmd !=
SW_NORMAL)
{
placement.showCmd = SW_RESTORE;
SetWindowPlacement(hWnd, ref
placement);
SetForegroundWindow(hWnd);
}
}
return;
}
Application.Run(new Form1());
GC.KeepAlive(Mut);
}
private const int SW_NORMAL = 1;
private const int SW_RESTORE = 9;
[DllImport("User32",
EntryPoint = "FindWindow")]
static extern
IntPtr FindWindow(string
className, string windowName);
[DllImport("User32",
EntryPoint = "SendMessage")]
private static extern IntPtr
SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
[DllImport("User32",
EntryPoint = "SetForegroundWindow")]
private static extern bool
SetForegroundWindow(IntPtr hWnd);
[DllImport("User32",
EntryPoint = "SetWindowPlacement")]
private static extern bool SetWindowPlacement(IntPtr
hWnd, [In] ref WINDOWPLACEMENT lpwndpl);
[DllImport("User32",
EntryPoint = "GetWindowPlacement")]
private static extern bool GetWindowPlacement(IntPtr
hWnd, [In] ref WINDOWPLACEMENT lpwndpl);
private struct
POINTAPI
{
public int x;
public int y;
}
private struct
RECT
{
public int left;
public int top;
public int right;
public int bottom;
}
private struct
WINDOWPLACEMENT
{
public int length;
public int flags;
public int showCmd;
public POINTAPI ptMinPosition;
public POINTAPI
ptMaxPosition;
public RECT rcNormalPosition;
}