protected override void OnFormClosed(FormClosedEventArgs args) { base.OnFormClosed(args); if (this.restartApplication) { NativeShellHelper.StartProcess(WindowsUtils.GetExecutablePath()); } }
static void Main(string[] args) { System.AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); HuiruiSoft.Utils.WindowsUtils.LoadImageFromResource(typeof(ResourceFinder)); HuiruiSoft.Utils.WindowsUtils.LoadAppIconFromResource(typeof(ResourceFinder)); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.DoEvents(); var tmpCheckResult = ApplicationDefines.CheckApplicationReadied(); if (!tmpCheckResult) { if (System.Globalization.CultureInfo.CurrentCulture.Name == "zh-CN") { var localLanguageFile = Path.Combine(Application.StartupPath, ApplicationDefines.ChineseSimpLanguageFile); HuiruiSoft.Safe.Localization.LocalizationResourceReader.ReadLocalizationResource(localLanguageFile); } var tmpInitializeWizard = new formNewSafeWizard(); if (tmpInitializeWizard.ShowDialog() == DialogResult.OK) { NativeShellHelper.StartProcess(WindowsUtils.GetExecutablePath()); } return; } applicationConfig = ApplicationConfigSerializer.Load(); if (!string.IsNullOrEmpty(applicationConfig.Application.LanguageFile)) { HuiruiSoft.Safe.Localization.LocalizationResourceReader.ReadLocalizationResource(applicationConfig.Application.LanguageFile); } try { ApplicationMessage = NativeMethods.RegisterWindowMessage(ApplicationDefines.WindowMessageId); } catch (System.Exception) { System.Diagnostics.Debug.Assert(false); } bool tmpSingleLock = HuiruiSoft.Utils.GlobalMutexPool.CreateMutex(ApplicationDefines.MutexName, true); if (!tmpSingleLock) { ActivatePreviousInstance(args); HuiruiSoft.Utils.GlobalMutexPool.ReleaseAll(); return; } log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(Path.Combine(Application.StartupPath, ApplicationDefines.Log4NetConfigFile))); var tmpGlobalNotify = TryGlobalInstanceNotify(ApplicationDefines.MutexNameGlobal); var formLoginWindow = new formLoginWindow(); if (formLoginWindow.ShowDialog() != DialogResult.OK) { Application.Exit(); } else { var tmpMessageFilter = new CustomMessageFilter(); Application.AddMessageFilter(tmpMessageFilter); MainWindow = new formAccountManager(); Application.Run(MainWindow); Application.RemoveMessageFilter(tmpMessageFilter); } if (tmpGlobalNotify != null) { System.GC.KeepAlive(tmpGlobalNotify); } }