Esempio n. 1
0
 protected override void OnFormClosed(FormClosedEventArgs args)
 {
     base.OnFormClosed(args);
     if (this.restartApplication)
     {
         NativeShellHelper.StartProcess(WindowsUtils.GetExecutablePath());
     }
 }
Esempio n. 2
0
        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);
            }
        }