Exemple #1
0
        private static void Main()
        {
            // Use a mutex to ensure single instance
            using (new Mutex(true, "{959d3545-aa5c-42a8-a327-6e2c079daa94}", out var createNew))
            {
                if (createNew)
                {
                    // Start a tray instead of a WinForm to reduce memory usage
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    var main = new MainController();
                    Application.AddMessageFilter(new MsgFilter(main));
                    Application.Run(main);
                }

                // Show the settings window if an instance already exists
                var process = Process.GetProcessesByName(Application.ProductName)
                              .FirstOrDefault(_ => _.Threads[0].Id != Process.GetCurrentProcess().Threads[0].Id);
                if (process is null)
                {
                    return;
                }

                InvokeMethods.BringOutSettingsWindow(process.Threads[0].Id);
            }
        }