using System;using System.Diagnostics;using System.Windows.Forms;using System.Reflection;using System.Runtime.InteropServices;namespace RPAMessenger...{ public class Program ...{ private const int WS_SHOWNORMAL = 1; [DllImport("User32.dll")] private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow); [DllImport("User32.dll")] private static extern bool SetForegroundWindow(IntPtr hWnd); [STAThread] static void Main() ...{ //Mutex mutex = new Mutex(false, "RPAMessenger"); //bool Running = !mutex.WaitOne(0, false); //if (!Running) //{ // Application.EnableVisualStyles(); // Application.SetCompatibleTextRenderingDefault(false); // Application.Run(new FrmRPAMsgLgn()); //} //else //{ } Process instance = GetRunningInstance(); if (instance == null) ...{ Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new FrmRPAMsgLgn()); } else ...{ HandleRunningInstance(instance); } } public static Process GetRunningInstance() ...{ Process current = Process.GetCurrentProcess(); Process[] processes = Process.GetProcessesByName(current.ProcessName); foreach (Process process in processes) ...{ if (process.Id != current.Id) if (Assembly.GetExecutingAssembly().Location.Replace("/", "/") == current.MainModule.FileName) return process; } return null; } public static void HandleRunningInstance(Process instance) ...{ ShowWindowAsync(instance.MainWindowHandle, WS_SHOWNORMAL); SetForegroundWindow(instance.MainWindowHandle); } }}