using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using System.Diagnostics; using System.Runtime.InteropServices; using System.Reflection; namespace WCS { static class Program { [DllImport("User32.dll")] private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow); [DllImport("User32.dll")] private static extern bool SetForegroundWindow(IntPtr hWnd); private const int WS_SHOWNORMAL = 1; /// /// 应用程序的主入口点。 /// [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); //Application.Run(new main()); Process instance = RunningInstance(); if (instance == null) { //Application.Run(new main()); Application.Run(new Form2()); } else { HandleRunningInstance(instance); } } /// /// 获取正在运行的实例,没有运行的实例返回null; /// public static Process RunningInstance() { 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) { MessageBox.Show("系统已运行,请勿重复打开", "提示"); ShowWindowAsync(instance.MainWindowHandle, WS_SHOWNORMAL); //显示,可以注释掉 SetForegroundWindow(instance.MainWindowHandle); //放到前端 } } }