private static void Main(string[] args) { Application.ThreadException += Application_ThreadException; AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; StartTimer = Stopwatch.StartNew(); // For be able to show startup time CLI = new CLIManager(args); CLI.ParseCommands(); if (CheckAdminTasks()) return; // If ShareX opened just for be able to execute task as Admin IsMultiInstance = CLI.IsCommandExist("multi", "m"); if (IsMultiInstance || ApplicationInstanceManager.CreateSingleInstance(SingleInstanceCallback, args)) { using (Mutex mutex = new Mutex(false, "82E6AC09-0FEF-4390-AD9F-0DD3F5561EFC")) // Required for installer { Run(); } if (restarting) { Process.Start(Application.ExecutablePath); } } }
private static void SingleInstanceCallback(object sender, InstanceCallbackEventArgs args) { if (WaitFormLoad(5000)) { Action d = () => { if (args.CommandLineArgs == null || args.CommandLineArgs.Length < 1) { if (MainForm.niTray != null && MainForm.niTray.Visible) { // Workaround for Windows startup tray icon bug MainForm.niTray.Visible = false; MainForm.niTray.Visible = true; } MainForm.ShowActivate(); } else if (MainForm.Visible) { MainForm.ShowActivate(); } CLIManager cli = new CLIManager(args.CommandLineArgs); cli.ParseCommands(); MainForm.UseCommandLineArgs(cli.Commands); }; MainForm.InvokeSafe(d); } }
private static void Main(string[] args) { Application.ThreadException += Application_ThreadException; AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; StartTimer = Stopwatch.StartNew(); // For be able to show startup time CLI = new CLIManager(args); CLI.ParseCommands(); #if STEAM if (CheckUninstall()) return; // Steam will run ShareX with -Uninstall when uninstalling #endif if (CheckAdminTasks()) return; // If ShareX opened just for be able to execute task as Admin UpdatePersonalPath(); DebugHelper.Init(LogsFilePath); IsMultiInstance = CLI.IsCommandExist("multi", "m"); using (ApplicationInstanceManager instanceManager = new ApplicationInstanceManager(!IsMultiInstance, args, SingleInstanceCallback)) { Run(); } if (restarting) { Process.Start(Application.ExecutablePath); } }