Пример #1
0
        static void Main(string[] args)
        {
            // Запоминаем агрументы запуска (могут понадобиться при перезапуске после обновления)
            HMS.StartArgs = string.Join(" ", args);
            // Заголовок для всех MessageBox
            HMSEditor.MsgCaption += " v" + Application.ProductVersion;

            // Класс SingleGlobalInstance используется для проверки, не запущена ли уже другая копия программы
            using (SingleGlobalInstance instance = new SingleGlobalInstance(1000)) {
                if (!instance.Success)
                {
                    string msg = "HMS Editor уже запущен!\n\n" +
                                 "Завершить запущенные процессы и продолжить работу?";
                    DialogResult answer = MessageBox.Show(msg, HMSEditor.MsgCaption, MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                    if (answer == DialogResult.No)
                    {
                        return;
                    }

                    CloseAllOtherHMSEditors();
                    instance.CreateMutex();
                }
                // Всё норм, запускаемся. Для начала вставляем обработку события при неудачных зависимостях, а там загрузим внедрённые dll
                AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);

                try {
                    SetAllowUnsafeHeaderParsing();
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);

                    // Загружаем встроенные шрифты
                    HMS.AddFontFromResource("RobotoMono-Regular.ttf");
                    HMS.AddFontFromResource("Roboto-Regular.ttf");

                    // Заполняем базу знаний функций, классов, встроенных констант и переменных...
                    HMS.InitAndLoadHMSKnowledgeDatabase();

                    HMSEditor.DebugMe = CheckKey(args, "-debugga");

                    if (CheckKey(args, "-givemesomemagic"))
                    {
                        // Запуск "тихого" режима
                        HMSEditor.SilentMode = true;
                        if (HMSEditor.WatchHMS())
                        {
                            Application.Run(new HMSEditorAppContext());
                        }
                    }
                    else
                    {
                        // Запуск в обычном режиме с появлением отдельного самостоятельного окна
                        Application.Run(new FormMain());
                    }

                    // Проверяем, были ли выполнены все действия при выходе (снятие хуков и проч.)
                    if (!HMSEditor.Exited)
                    {
                        HMSEditor.Exit();
                    }
                } catch (Exception e) {
                    MessageBox.Show("Очень жаль, но работа программы невозможна.\n\n" + e.ToString(), HMSEditor.MsgCaption, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    HMS.LogError(e.ToString());
                }
            }
        }
Пример #2
0
        static void Main(string[] args)
        {
            // Запоминаем агрументы запуска (могут понадобиться при перезапуске после обновления)
            HMS.StartArgs = string.Join(" ", args);
            // Заголовок для всех MessageBox
            HMSEditor.MsgCaption += " v" + Application.ProductVersion;

            // Класс SingleGlobalInstance используется для проверки, не запущена ли уже другая копия программы
            using (SingleGlobalInstance instance = new SingleGlobalInstance(1000)) {
                if (!instance.Success) {
                    string msg = "HMS Editor уже запущен!\n\n"+
                                 "Завершить запущенные процессы и продолжить работу?";
                    DialogResult answer = MessageBox.Show(msg, HMSEditor.MsgCaption, MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                    if (answer == DialogResult.No) return;

                    CloseAllOtherHMSEditors();
                    instance.CreateMutex();
                }
                // Всё норм, запускаемся. Для начала вставляем обработку события при неудачных зависимостях, а там загрузим внедрённые dll
                AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);

                try {
                    SetAllowUnsafeHeaderParsing();
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);

                    // Загружаем встроенные шрифты
                    HMS.AddFontFromResource("RobotoMono-Regular.ttf");
                    HMS.AddFontFromResource("Roboto-Regular.ttf");

                    // Заполняем базу знаний функций, классов, встроенных констант и переменных...
                    HMS.InitAndLoadHMSKnowledgeDatabase();

                    HMSEditor.DebugMe = CheckKey(args, "-debugga");

                    if (CheckKey(args, "-givemesomemagic")) {
                        // Запуск "тихого" режима
                        HMSEditor.SilentMode = true;
                        if (HMSEditor.WatchHMS())
                            Application.Run(new HMSEditorAppContext());
                    } else {
                        // Запуск в обычном режиме с появлением отдельного самостоятельного окна
                        Application.Run(new FormMain());
                    }

                    // Проверяем, были ли выполнены все действия при выходе (снятие хуков и проч.)
                    if (!HMSEditor.Exited) HMSEditor.Exit();

                } catch (Exception e) {
                    MessageBox.Show("Очень жаль, но работа программы невозможна.\n\n"+ e.ToString(), HMSEditor.MsgCaption, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    HMS.LogError(e.ToString());

                }

            }
        }