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()); } } }
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()); } } }