using System; using System.IO; using System.Runtime.InteropServices; using System.Threading; using System.Windows.Forms; using Spring.Main; namespace Spring { internal static class Program { #region Static Fields and Constants private static readonly Mutex Mutex = new Mutex(true, Constants.AssemblyGuid); #endregion #region Private Methods /// /// The main entry point for the application. /// [STAThread] private static void Main() { Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory); if (Mutex.WaitOne(TimeSpan.Zero, true)) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); return; } // Foreground current other application window. Natives.PostMessage( (IntPtr) Natives.HWndBroadcast, Natives.WmShowMe, IntPtr.Zero, IntPtr.Zero); } #endregion #region Nested Types internal class Natives { #region Static Fields and Constants public const int HWndBroadcast = 0xffff; public static readonly int WmShowMe = RegisterWindowMessage("WM_SHOWME"); #endregion #region Public Methods [DllImport("user32.dll", EntryPoint = "RegisterWindowMessageW", SetLastError = true)] public static extern int RegisterWindowMessage(string lpString); [DllImport("user32")] public static extern bool PostMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); #endregion } #endregion } }