private void WrkChkApp_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { try { // Проверим статус проверки... if (e.Error == null) { // Проверим наличие обновлений для приложения... if (UpMan.CheckAppUpdate()) { UpdAppImg.Image = Properties.Resources.upd_av; UpdAppStatus.Text = String.Format(AppStrings.UPD_AppUpdateAvail, UpMan.AppUpdateVersion); } else { UpdAppImg.Image = Properties.Resources.upd_nx; UpdAppStatus.Text = AppStrings.UPD_AppNoUpdates; UpdateTimeSetApp(); } // Проверим наличие обновлений для базы игр... if (UpMan.CheckGameDBUpdate()) { UpdDBImg.Image = Properties.Resources.upd_av; UpdDBStatus.Text = String.Format(AppStrings.UPD_DbUpdateAvail, UpMan.GameUpdateHash.Substring(0, 7)); } else { UpdDBImg.Image = Properties.Resources.upd_nx; UpdDBStatus.Text = AppStrings.UPD_DbNoUpdates; } // Проверим наличие обновлений для базы HUD... if (UpMan.CheckHUDUpdate()) { UpdHUDDbImg.Image = Properties.Resources.upd_av; UpdHUDStatus.Text = String.Format(AppStrings.UPD_HUDUpdateAvail, UpMan.HUDUpdateHash.Substring(0, 7)); } else { UpdHUDDbImg.Image = Properties.Resources.upd_nx; UpdHUDStatus.Text = AppStrings.UPD_HUDNoUpdates; UpdateTimeSetHUD(); } } else { // Произошла ошибка... UpdAppImg.Image = Properties.Resources.upd_err; UpdAppStatus.Text = AppStrings.UPD_AppCheckFailure; UpdDBImg.Image = Properties.Resources.upd_err; UpdDBStatus.Text = AppStrings.UPD_DbCheckFailure; UpdHUDDbImg.Image = Properties.Resources.upd_err; UpdHUDStatus.Text = AppStrings.UPD_HUDCheckFailure; // Запишем в журнал... CoreLib.WriteStringToLog(e.Error.Message); } } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); } }
/// <summary> /// Метод, срабатывающий по окончании работы механизма удаления файлов /// в отдельном потоке. /// </summary> private void RW_Wrk_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { // Удаление завершено. Закроем форму... IsRunning = false; if (e.Error != null) { CoreLib.HandleExceptionEx(AppStrings.RW_RmException, Properties.Resources.AppName, e.Error.Message, e.Error.Source, MessageBoxIcon.Warning); } Close(); }
/// <summary> /// Метод, срабатывающий при нажатии на кнопку "Копировать". /// </summary> private void HEd_T_Copy_Click(object sender, EventArgs e) { try { if (HEd_Table.Rows[HEd_Table.CurrentRow.Index].Cells[HEd_Table.CurrentCell.ColumnIndex].Value != null) { Clipboard.SetText(HEd_Table.Rows[HEd_Table.CurrentRow.Index].Cells[HEd_Table.CurrentCell.ColumnIndex].Value.ToString()); } } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); } }
/// <summary> /// Устанавливает обновление в виде отдельного исполняемого файла. /// </summary> /// <param name="UpdateURL">URL загрузки обновления</param> /// <param name="UpdateHash">Контрольная сумма файла обновления</param> /// <returns>Возвращает true при успешной установке обновления, иначе - false.</returns> private bool InstallBinaryUpdate(string UpdateURL, string UpdateHash) { // Задаём значения переменных по умолчанию... bool Result = false; // Генерируем имя файла обновления... string UpdateFileName = UpdateManager.GenerateUpdateFileName(Path.Combine(AppUserDir, Path.GetFileName(UpdateURL))); // Загружаем файл асинхронно... FormManager.FormShowDownloader(UpMan.AppUpdateURL, UpdateFileName); // Выполняем проверки и устанавливаем обновление... if (File.Exists(UpdateFileName)) { // Проверяем хеш загруженного файла с эталоном... if (FileManager.CalculateFileMD5(UpdateFileName) == UpdateHash) { // Обновляем дату последней проверки обновлений... UpdateTimeSetApp(); // Выводим сообщение об успешном окончании загрузки и готовности к установке обновления... MessageBox.Show(AppStrings.UPD_UpdateSuccessful, Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Information); // Запускаем установку standalone-обновления... try { if (FileManager.IsDirectoryWritable(FullAppPath)) { Process.Start(UpdateFileName); } else { ProcessManager.StartWithUAC(UpdateFileName); } Result = true; } catch (Exception Ex) { CoreLib.HandleExceptionEx(AppStrings.UPD_UpdateFailure, Properties.Resources.AppName, Ex.Message, Ex.Source, MessageBoxIcon.Error); } } else { // Хеш-сумма не совпала, поэтому файл скорее всего повреждён. Удаляем... try { File.Delete(UpdateFileName); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); } // Выводим сообщение о несовпадении контрольной суммы... MessageBox.Show(AppStrings.UPD_HashFailure, Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { // Не удалось загрузить файл обновления. Выводим сообщение об ошибке... MessageBox.Show(AppStrings.UPD_UpdateFailure, Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Warning); } // Повторно запускаем проверку обновлений... CheckForUpdates(); // Возвращаем результат... return(Result); }
/// <summary> /// Метод, срабатывающий при нажатии на кнопку "Очистить журнал". /// </summary> private void LV_MunuFileClearLog_Click(object sender, EventArgs e) { // Очистим форму... LV_LogArea.Clear(); // Очистим файл журнала... try { if (File.Exists(LogFileName)) { File.Delete(LogFileName); FileManager.CreateFile(LogFileName); } } catch (Exception Ex) { CoreLib.HandleExceptionEx(AppStrings.LV_ClearEx, Properties.Resources.AppName, Ex.Message, Ex.Source, MessageBoxIcon.Warning); } }
/// <summary> /// Метод, срабатывающий при нажатии на кнопку перехода к Steam /// профилю выбранного пользователя. /// </summary> private void MM_Steam_Click(object sender, EventArgs e) { try { if (MM_Table.Rows[MM_Table.CurrentRow.Index].Cells[MM_Table.CurrentCell.ColumnIndex].Value != null) { string Value = MM_Table.Rows[MM_Table.CurrentRow.Index].Cells[MM_Table.CurrentCell.ColumnIndex].Value.ToString(); ProcessManager.OpenWebPage(String.Format(Properties.Resources.MM_CommunityURL, Regex.IsMatch(Value, Properties.Resources.MM_SteamID32Regex) ? SteamConv.ConvSid32Sid64(Value) : SteamConv.ConvSidv3Sid64(Value))); } } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); } }
/// <summary> /// Метод, срабатывающий при нажатии на кнопку "Удалить строку". /// </summary> private void HEd_T_RemRw_Click(object sender, EventArgs e) { try { foreach (DataGridViewCell Cell in HEd_Table.SelectedCells) { if (Cell.Selected) { HEd_Table.Rows.RemoveAt(Cell.RowIndex); } } } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); } }
/// <summary> /// Отображает диалоговое окно менеджера быстрой очистки. /// </summary> /// <param name="Paths">Каталоги для очистки</param> /// <param name="Mask">Маска файлов, подлежащих очистке</param> /// <param name="LText">Текст заголовка</param> /// <param name="CheckBin">Имя бинарника, работа которого будет проверяться перед запуском очистки</param> /// <param name="ResultMsg">Текст сообщения, которое будет выдаваться по завершении очистки</param> /// <param name="BackUpDir">Каталог для сохранения резервных копий</param> /// <param name="ReadOnly">Пользователю будет запрещено изменять выбор удаляемых файлов</param> /// <param name="NoAuto">Включает / отключает автовыбор файлов флажками</param> /// <param name="Recursive">Включает / отключает рекурсивный обход</param> /// <param name="ForceBackUp">Включает / отключает принудительное создание резервных копий</param> public static void FormShowCleanup(List <String> Paths, string LText, string ResultMsg, string BackUpDir, string CheckBin, bool ReadOnly = false, bool NoAuto = false, bool Recursive = true, bool ForceBackUp = false) { try { if (!ProcessManager.IsProcessRunning(Path.GetFileNameWithoutExtension(CheckBin))) { using (FrmCleaner FCl = new FrmCleaner(Paths, BackUpDir, LText, ResultMsg, ReadOnly, NoAuto, Recursive, ForceBackUp)) { FCl.ShowDialog(); } } else { MessageBox.Show(String.Format(AppStrings.PS_AppRunning, CheckBin), Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Warning); } } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); } }
/// <summary> /// Метод, срабатывающий при нажатии на кнопку вставки из /// буфера обмена. /// </summary> private void MM_Paste_Click(object sender, EventArgs e) { try { if (Clipboard.ContainsText()) { List <String> Rows = ParseRow(Clipboard.GetText()); foreach (string Row in Rows) { MM_Table.Rows.Add(Row); } } } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); } }
/// <summary> /// Метод, срабатывающий при нажатии на кнопку сохранения. /// </summary> private void WriteTable(object sender, EventArgs e) { try { if (Properties.Settings.Default.SafeCleanup) { if (File.Exists(Banlist)) { FileManager.CreateConfigBackUp(Banlist, BackUpDir, Properties.Resources.BU_PrefixVChat); } } WriteTableToFile(Banlist); MessageBox.Show(AppStrings.MM_SavedOK, Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception Ex) { CoreLib.HandleExceptionEx(AppStrings.MM_SaveException, Properties.Resources.AppName, Ex.Message, Ex.Source, MessageBoxIcon.Warning); } }
/// <summary> /// Метод, срабатывающий при нажатии на кнопку копирования /// строки в буфер обмена. /// </summary> private void MM_Copy_Click(object sender, EventArgs e) { try { StringBuilder SB = new StringBuilder(); foreach (DataGridViewCell Cell in MM_Table.SelectedCells) { if (Cell.Selected) { SB.AppendFormat("{0} ", Cell.Value); } } Clipboard.SetText(SB.ToString()); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); } }
/// <summary> /// Считывает из главного файла конфигурации Steam пути к дополнительным точкам монтирования. /// </summary> private List <String> GetSteamMountPoints() { // Создаём массив, в который будем помещать найденные пути... List <String> Result = new List <String> { FullSteamPath }; // Начинаем чтение главного файла конфигурации... try { // Открываем файл как поток... using (StreamReader SteamConfig = new StreamReader(Path.Combine(FullSteamPath, "config", "config.vdf"), Encoding.Default)) { // Инициализируем буферную переменную... string RdStr; // Читаем поток построчно... while (SteamConfig.Peek() >= 0) { // Считываем строку и сразу очищаем от лишнего... RdStr = SteamConfig.ReadLine().Trim(); // Проверяем наличие данных в строке... if (!(String.IsNullOrWhiteSpace(RdStr))) { // Ищем в строке путь установки... if (RdStr.IndexOf("BaseInstallFolder", StringComparison.CurrentCultureIgnoreCase) != -1) { RdStr = CoreLib.CleanStrWx(RdStr, true, true); RdStr = RdStr.Remove(0, RdStr.IndexOf(" ") + 1); if (!(String.IsNullOrWhiteSpace(RdStr))) { Result.Add(RdStr); } } } } } } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); } // Возвращаем сформированный массив... return(Result); }
/// <summary> /// Метод, срабатывающий при нажатии кнопки отмены произведённых изменений. /// </summary> private void Dis_Restore_Click(object sender, EventArgs e) { // Восстанавливаем настройки по умолчанию... if (MessageBox.Show(AppStrings.KB_ExRestore, Properties.Resources.AppName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { try { DeleteKBS("Scancode Map"); MessageBox.Show(AppStrings.KB_ExSuccess, Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Information); Close(); } catch (Exception Ex) { CoreLib.HandleExceptionEx(AppStrings.KB_ExException, Properties.Resources.AppName, Ex.Message, Ex.Source, MessageBoxIcon.Warning); } } }
/// <summary> /// Метод, срабатывающий по окончании работы механизма очистки в отдельном потоке. /// </summary> private void ClnWrk_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (e.Error == null) { // Выводим сообщение об успешном окончании очистки... CM_Info.Text = AppStrings.PS_ProgressFinished; MessageBox.Show(SuccessMessage, Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Information); } else { // В случае исключений пишем в отладочный лог... CoreLib.WriteStringToLog(e.Error.Message); } // Закрываем форму... Close(); }
/// <summary> /// Сохраняет содержимое редактора на форме в файл Hosts. /// </summary> /// <param name="Path">Путь к файлу Hosts</param> private void WriteTableToHosts(string Path) { using (StreamWriter CFile = new StreamWriter(Path, false, Encoding.Default)) { try { CFile.WriteLine(CoreLib.GetTemplateFromResource(Properties.Resources.AHE_TemplateFile)); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); } foreach (DataGridViewRow Row in HEd_Table.Rows) { if ((Row.Cells[0].Value != null) && (Row.Cells[1].Value != null)) { if (IPAddress.TryParse(Row.Cells[0].Value.ToString(), out IPAddress IPAddr)) { CFile.WriteLine("{0} {1}", IPAddr, Row.Cells[1].Value); } } } } }
/// <summary> /// Метод, срабатывающий при нажатии кнопки отключения обеих клавиш WIN. /// </summary> private void Dis_BWIN_Click(object sender, EventArgs e) { // Отключаем обе клавиши WIN... // 00 00 00 00 00 00 00 00 03 00 00 00 00 00 5B E0 00 00 5C E0 00 00 00 00 if (MessageBox.Show(String.Format(AppStrings.KB_ExQuestion, ((Button)sender).Text.ToLower()), Properties.Resources.AppName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { try { WriteKBS(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 91, 224, 0, 0, 92, 224, 0, 0, 0, 0 }); MessageBox.Show(AppStrings.KB_ExSuccess, Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Information); Close(); } catch (Exception Ex) { CoreLib.HandleExceptionEx(AppStrings.KB_ExException, Properties.Resources.AppName, Ex.Message, Ex.Source, MessageBoxIcon.Warning); } } }
/// <summary> /// Создаёт резервную копию конфигов, имена которых переданы в параметре. /// </summary> /// <param name="Configs">Конфиги для бэкапа</param> /// <param name="BackUpDir">Путь к каталогу с резервными копиями</param> /// <param name="Prefix">Префикс имени файла резервной копии</param> public static void CreateConfigBackUp(List <String> Configs, string BackUpDir, string Prefix) { // Проверяем чтобы каталог для бэкапов существовал... if (!(Directory.Exists(BackUpDir))) { Directory.CreateDirectory(BackUpDir); } // Проверим существование конфигов и запишем в список только имена реально существующих файлов... Configs = GetRealFilesFromList(Configs); // Копируем оригинальный файл в файл бэкапа... try { if (Configs.Count > 0) { CompressFiles(Configs, GenerateBackUpFileName(BackUpDir, Prefix)); } } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); } }
/// <summary> /// Метод, срабатывающий по окончании работы механизма загрузки в отдельном потоке. /// </summary> private void DownloaderCompleted(object sender, AsyncCompletedEventArgs e) { // Загрузка завершена. Проверим скачалось ли что-то. Если нет, удалим пустой файл... try { if (File.Exists(LocalFile)) { FileInfo Fi = new FileInfo(LocalFile); if (Fi.Length == 0) { File.Delete(LocalFile); } } } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); } // Закроем форму... IsRunning = false; Close(); }
/// <summary> /// Упаковывает файлы, имена которых переданых в массиве, в Zip-архив с /// произвольным именем. /// </summary> /// <param name="Files">Массив с именами файлов, которые будут добавлены в архив</param> /// <param name="ArchiveName">Имя для создаваемого архивного файла</param> /// <returns>В случае успеха возвращает истину, иначе - ложь</returns> public static bool CompressFiles(List <String> Files, string ArchiveName) { try { using (ZipFile ZBkUp = new ZipFile(ArchiveName, Encoding.UTF8)) { ZBkUp.AddFiles(Files, true, String.Empty); ZBkUp.Save(); } } catch (Exception Ex) { try { if (File.Exists(ArchiveName)) { File.Delete(ArchiveName); } } catch (Exception E1) { CoreLib.WriteStringToLog(E1.Message); } CoreLib.WriteStringToLog(Ex.Message); } return(File.Exists(ArchiveName)); }
/// <summary> /// Метод, инициирущий процесс загрузки файла из Интернета. /// </summary> private void DownloaderStart(string URI, string FileName) { try { // Проверим существование файла и удалим... if (File.Exists(FileName)) { File.Delete(FileName); } // Начинаем асинхронную загрузку файла... using (WebClient FileDownloader = new WebClient()) { FileDownloader.Headers.Add("User-Agent", Properties.Resources.AppDnlUA); FileDownloader.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloaderCompleted); FileDownloader.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloaderProgressChanged); FileDownloader.DownloadFileAsync(new Uri(URI), FileName); } } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); } }
public static void OpenTextEditor(string FileName, CurrentPlatform.OSType OS) { try { switch (OS) { case CurrentPlatform.OSType.Windows: Process.Start(Properties.Settings.Default.EditorBin, FileName); break; case CurrentPlatform.OSType.Linux: Process.Start(Properties.Resources.AppOpenHandlerLin, FileName); break; case CurrentPlatform.OSType.MacOSX: Process.Start(Properties.Resources.AppOpenHandlerMac, String.Format("{0} \"{1}\"", "-t", FileName)); break; } } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); } }
public static void OpenExplorer(string FileName, CurrentPlatform.OSType OS) { try { switch (OS) { case CurrentPlatform.OSType.Windows: Process.Start(Properties.Resources.ShBinWin, String.Format("{0} \"{1}\"", Properties.Resources.ShParamWin, FileName)); break; case CurrentPlatform.OSType.Linux: Process.Start(Properties.Resources.AppOpenHandlerLin, String.Format("\"{0}\"", Path.GetDirectoryName(FileName))); break; case CurrentPlatform.OSType.MacOSX: Process.Start(Properties.Resources.AppOpenHandlerMac, String.Format("\"{0}\"", Path.GetDirectoryName(FileName))); break; } } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); } }
/// <summary> /// Метод, срабатывающий при нажатии на кнопку преобразования /// формата SteamID. /// </summary> private void MM_Convert_Click(object sender, EventArgs e) { try { foreach (DataGridViewCell Cell in MM_Table.SelectedCells) { string CellText = Cell.Value.ToString(); if (Cell.Selected && Regex.IsMatch(CellText, Properties.Resources.MM_SteamID32Regex)) { Cell.Value = SteamConv.ConvSid32Sidv3(CellText); } else { if (MM_Table.SelectedCells.Count == 1) { MessageBox.Show(AppStrings.MM_ConvRest, Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Warning); } } } } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); } }
/// <summary> /// Главный конструктор класса GameManager. /// </summary> /// <param name="App">Экземпляр класса с параметрами приложения</param> public GameManager(CurrentApp App) { // Создаём объекты для хранения базы игр... SourceGames = new List <SourceGame>(); InstalledGames = new List <String>(); // При использовании нового метода поиска установленных игр, считаем их из конфига Steam... List <String> GameDirs = App.SteamClient.FormatInstallDirs(App.Platform.SteamAppsFolderName); // Создаём поток с XML-файлом... using (FileStream XMLFS = new FileStream(Path.Combine(App.FullAppPath, Properties.Resources.GameListFile), FileMode.Open, FileAccess.Read)) { // Создаём объект документа XML... XmlDocument XMLD = new XmlDocument(); // Загружаем поток в объект XML документа... XMLD.Load(XMLFS); // Обходим полученный список в цикле... XmlNodeList XMLNode = XMLD.GetElementsByTagName("Game"); for (int i = 0; i < XMLNode.Count; i++) { try { if (XMLD.GetElementsByTagName("Enabled")[i].InnerText == "1" || !Properties.Settings.Default.HideUnsupportedGames) { SourceGame SG = new SourceGame(XMLNode[i].Attributes["Name"].Value, XMLD.GetElementsByTagName("DirName")[i].InnerText, XMLD.GetElementsByTagName("SmallName")[i].InnerText, XMLD.GetElementsByTagName("Executable")[i].InnerText, XMLD.GetElementsByTagName("SID")[i].InnerText, XMLD.GetElementsByTagName("SVer")[i].InnerText, XMLD.GetElementsByTagName("VFDir")[i].InnerText, App.Platform.OS == CurrentPlatform.OSType.Windows ? XMLD.GetElementsByTagName("HasVF")[i].InnerText == "1" : true, XMLD.GetElementsByTagName("UserDir")[i].InnerText == "1", XMLD.GetElementsByTagName("HUDsAvail")[i].InnerText == "1", App.FullAppPath, App.AppUserDir, App.SteamClient.FullSteamPath, App.Platform.SteamAppsFolderName, App.SteamClient.SteamID, GameDirs); if (SG.IsInstalled) { SourceGames.Add(SG); InstalledGames.Add(SG.FullAppName); } } } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); } } } }
/// <summary> /// Метод, срабатывающий по окончании работы механизма поиска кандидатов /// на удаление в отдельном потоке. /// </summary> private void GttWrk_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { // Указываем сколько МБ освободится при удалении всех файлов... CM_Info.Text = String.Format(AppStrings.PS_FrFInfo, CoreLib.SclBytes(TotalSize)); // Проверим есть ли кандидаты для удаления (очистки)... if (CM_FTable.Items.Count == 0) { // Выдадим сообщение если очищать нечего... MessageBox.Show(AppStrings.PS_LoadErr, Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Warning); // Отключим кнопку запуска очистки... CM_Clean.Enabled = false; // Закроем форму. Close(); } else { // Включаем кнопку очистки... CM_Clean.Enabled = true; } }
/// <summary> /// Метод, информирующий основную форму о прогрессе загрузки файлов, который /// выполняется в отдельном потоке. /// </summary> private void DownloaderProgressChanged(object sender, DownloadProgressChangedEventArgs e) { // Отрисовываем статус в прогресс-баре... try { DN_PrgBr.Value = e.ProgressPercentage; } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); } }
public static void OpenWebPage(string URI) { try { Process.Start(URI); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); } }
/// <summary> /// Метод, срабатывающий при нажатии на кнопку обновления таблицы. /// </summary> private void UpdateTable(object sender, EventArgs e) { try { MM_Table.Rows.Clear(); ReadFileToTable(Banlist); } catch (Exception Ex) { CoreLib.HandleExceptionEx(AppStrings.MM_ExceptionDetected, Properties.Resources.AppName, Ex.Message, Ex.Source, MessageBoxIcon.Warning); } }
/// <summary> /// Метод, срабатывающий при нажатии на кнопку "Обновить". /// </summary> private void HEd_T_Refresh_Click(object sender, EventArgs e) { try { ReadHostsToTable(HostsFilePath); } catch (Exception Ex) { CoreLib.HandleExceptionEx(String.Format(AppStrings.AHE_ExceptionDetected, HostsFilePath), PluginName, Ex.Message, Ex.Source, MessageBoxIcon.Warning); } }
/// <summary> /// Начинает процесс сохранения таблицы в файл. /// </summary> private void SaveToFile() { if (ProcessManager.IsCurrentUserAdmin()) { try { WriteTableToHosts(HostsFilePath); MessageBox.Show(AppStrings.AHE_Saved, PluginName, MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception Ex) { CoreLib.HandleExceptionEx(String.Format(AppStrings.AHE_SaveException, HostsFilePath), PluginName, Ex.Message, Ex.Source, MessageBoxIcon.Warning); } } else { MessageBox.Show(String.Format(AppStrings.AHE_NoAdminRights, HostsFilePath), PluginName, MessageBoxButtons.OK, MessageBoxIcon.Error); } }