using System; using System.Windows.Forms; using System.Runtime.InteropServices;//使用DllImport的必须。 using System.Diagnostics;//引入Process 类namespace 命名空间 {static 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);/// <summary>/// 应用程序的主入口点。/// </summary> [STAThread]static void Main(){Process instance = GetRunningInstance();if (instance == null){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(new frm_Main());//在这启动主窗体。 }else{HandleRunningInstance(instance);}}/// <summary>/// 获取当前是否具有相同进程。/// </summary>/// <returns></returns>public static Process GetRunningInstance(){Process current = Process.GetCurrentProcess();Process[] processes = Process.GetProcessesByName(current.ProcessName);//遍历正在有相同名字运行的例程 foreach (Process process in processes){//忽略现有的例程 if (process.Id != current.Id)//确保例程从EXE文件运行 if ( System.Reflection.Assembly.GetExecutingAssembly().Location.Replace("/" , "\\") == current.MainModule.FileName )return process;}return null;}/// <summary>/// 激活原有的进程。/// </summary>/// <param name="instance"></param>public static void HandleRunningInstance(Process instance){ShowWindowAsync(instance.MainWindowHandle, WS_SHOWNORMAL);SetForegroundWindow(instance.MainWindowHandle);}} }