AdvancedLauncher.Tools.Execution.InstanceChecker.AlreadyRunning C# (CSharp) Method

AlreadyRunning() public static method

public static AlreadyRunning ( string mutexName ) : bool
mutexName string
return bool
        public static bool AlreadyRunning(string mutexName)
        {
            long runningId = 50000;
            bool InstanceRunning = false;

            Process proc = Process.GetCurrentProcess();
            Process[] runningProcesses = Process.GetProcesses();

            foreach (Process p in runningProcesses) {
                if (p.Id != proc.Id) {
                    bool Created = false;
                    mutex = new Mutex(true, mutexName + p.Id.ToString(), out Created);
                    if (!Created) {
                        InstanceRunning = true;
                        runningId = p.Id;
                        break;
                    } else {
                        mutex.Close();
                    }
                }
            }
            if (InstanceRunning) {
                IntPtr hWnd = Process.GetProcessById((int)runningId).MainWindowHandle;
                if (NativeMethods.IsIconic(hWnd)) {
                    NativeMethods.ShowWindowAsync(hWnd, 9);
                }
                NativeMethods.SetForegroundWindow(hWnd);
            } else {
                mutex = new Mutex(true, mutexName + proc.Id.ToString());
            }
            return InstanceRunning;
        }
InstanceChecker