using System; using System.Collections.Generic; using System.Windows.Forms; using System.Runtime.InteropServices; using System.Diagnostics; using System.Reflection; namespace BBrowser { static class Program { private const int WS_SHOWNORMAL = 1; public const Int32 AW_BLEND = 0x00080000; [DllImport("User32.dll")] private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow); [DllImport("User32.dll")] private static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("User32.dll")] private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags); [DllImport("User32.dll", EntryPoint = "FindWindow")] private extern static IntPtr FindWindow(string lpClassName, string lpWindowName); /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Process instance = GetRunningInstance(); if (instance == null) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new FrmMain()); } 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) { if (instance.MainWindowHandle.ToInt32() != 0) { ShowWindowAsync(instance.MainWindowHandle, WS_SHOWNORMAL); SetForegroundWindow(instance.MainWindowHandle); } else { IntPtr hwnd = FindWindow(null, "浏览器"); if (hwnd.ToInt32() == 0) hwnd = FindWindow(null, "浏览器"); ShowWindowAsync(hwnd, WS_SHOWNORMAL); SetForegroundWindow(hwnd); } } } }