WriteStringToLog() public static method

Функция, записывающая в лог-файл строку. Например, сообщение об ошибке.
public static WriteStringToLog ( string TextMessage ) : void
TextMessage string Сообщение для записи в лог
return void
Esempio n. 1
0
        /// <summary>
        /// Метод, работающий в отдельном потоке при запуске механизма поиска и удаления.
        /// </summary>
        private void RW_Wrk_DoWork(object sender, DoWorkEventArgs e)
        {
            // Создаём список файлов для удаления...
            List <string> DeleteQueue = DetectFilesForCleanup(RemDirs);

            // Формируем счётчики...
            int TotalFiles = DeleteQueue.Count;
            int i = 1, j = 0;

            // Удаляем файлы из очереди очистки...
            foreach (string Fl in DeleteQueue)
            {
                try { j = (int)Math.Round(((double)i / (double)TotalFiles * (double)100.00), 0); i++; if ((j >= 0) && (j <= 100))
                      {
                          RW_Wrk.ReportProgress(j);
                      }
                } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
                try { if (File.Exists(Fl))
                      {
                          File.SetAttributes(Fl, FileAttributes.Normal); File.Delete(Fl);
                      }
                } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
            }

            // Удаляем пустые каталоги...
            foreach (string Dir in RemDirs)
            {
                FileManager.RemoveEmptyDirectories(Path.GetDirectoryName(Dir));
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Метод, срабатывающий при нажатии на кнопку "Создать/Закрыть".
        /// </summary>
        private void GenerateNow_Click(object sender, EventArgs e)
        {
            // Проверим необходим ли нам запуск очистки или закрытие формы...
            if (!IsCompleted)
            {
                // Отключим контролы...
                GenerateNow.Text    = AppStrings.RPB_CptWrk;
                GenerateNow.Enabled = false;
                ControlBox          = false;

                // Запускаем асинхронный обработчик...
                if (!BwGen.IsBusy)
                {
                    BwGen.RunWorkerAsync();
                }
                else
                {
                    CoreLib.WriteStringToLog("RepGen Worker is busy. Can't start build sequence.");
                }
            }
            else
            {
                // Закрываем форму...
                Close();
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Ищет файлы по указанным маскам в указанных каталогах.
        /// </summary>
        /// <param name="CleanDirs">Каталоги для выполнения очистки с маской имени</param>
        /// <param name="IsRecursive">Включает / отключает рекурсивный поиск</param>
        /// <returns>Возвращает массив с именами файлов и полными путями</returns>
        public static List <String> ExpandFileList(List <String> CleanDirs, bool IsRecursive)
        {
            List <String> Result = new List <String>();

            foreach (string DirMs in CleanDirs)
            {
                string CleanDir = Path.GetDirectoryName(DirMs); string CleanMask = Path.GetFileName(DirMs);
                if (Directory.Exists(CleanDir))
                {
                    try
                    {
                        DirectoryInfo DInfo   = new DirectoryInfo(CleanDir);
                        FileInfo[]    DirList = DInfo.GetFiles(CleanMask);
                        foreach (FileInfo DItem in DirList)
                        {
                            Result.Add(DItem.FullName);
                        }
                        if (IsRecursive)
                        {
                            try { List <String> SubDirs = new List <string>(); foreach (DirectoryInfo Dir in DInfo.GetDirectories())
                                  {
                                      SubDirs.Add(Path.Combine(Dir.FullName, CleanMask));
                                  }
                                  if (SubDirs.Count > 0)
                                  {
                                      Result.AddRange(ExpandFileList(SubDirs, true));
                                  }
                            } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
                        }
                    }
                    catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
                }
            }
            return(Result);
        }
Esempio n. 4
0
        /// <summary>
        /// Конструктор класса. Читает базу данных в формате XML и заполняет нашу структуру.
        /// </summary>
        /// <param name="HUDDbFile">Путь к БД HUD</param>
        /// <param name="AppHUDDir">Путь к локальному каталогу с HUD</param>
        public HUDManager(string HUDDbFile, string AppHUDDir)
        {
            // Инициализируем наш список...
            HUDsAvailable = new List <HUDTlx>();

            // Получаем полный список доступных HUD для данной игры. Открываем поток...
            using (FileStream XMLFS = new FileStream(HUDDbFile, FileMode.Open, FileAccess.Read))
            {
                // Загружаем XML из потока...
                XmlDocument XMLD = new XmlDocument();
                XMLD.Load(XMLFS);

                // Разбираем XML файл и обходим его в цикле...
                for (int i = 0; i < XMLD.GetElementsByTagName("HUD").Count; i++)
                {
                    try
                    {
                        if (!Properties.Settings.Default.HUDHideOutdated || XMLD.GetElementsByTagName("IsUpdated")[i].InnerText == "1")
                        {
                            HUDsAvailable.Add(new HUDTlx(AppHUDDir, XMLD.GetElementsByTagName("Name")[i].InnerText, XMLD.GetElementsByTagName("Game")[i].InnerText, XMLD.GetElementsByTagName("URI")[i].InnerText, XMLD.GetElementsByTagName("UpURI")[i].InnerText, XMLD.GetElementsByTagName("IsUpdated")[i].InnerText == "1", XMLD.GetElementsByTagName("Preview")[i].InnerText, XMLD.GetElementsByTagName("LastUpdate")[i].InnerText, XMLD.GetElementsByTagName("Site")[i].InnerText, XMLD.GetElementsByTagName("ArchiveDir")[i].InnerText, XMLD.GetElementsByTagName("InstallDir")[i].InnerText, XMLD.GetElementsByTagName("Hash")[i].InnerText, Path.Combine(AppHUDDir, Path.ChangeExtension(Path.GetFileName(XMLD.GetElementsByTagName("Name")[i].InnerText), ".zip"))));
                        }
                    }
                    catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
                }
            }
        }
Esempio n. 5
0
        /// <summary>
        /// Метод, работающий в отдельном потоке при запуске механизма распаковки.
        /// </summary>
        private void AR_Wrk_DoWork(object sender, DoWorkEventArgs e)
        {
            // Начинаем процесс распаковки с выводом индикатора прогресса...
            if (File.Exists(ArchName))
            {
                using (ZipFile Zip = ZipFile.Read(ArchName))
                {
                    // Формируем счётчики...
                    int TotalFiles = Zip.Count;
                    int i = 1, j = 0;

                    // Начинаем распаковку архива...
                    foreach (ZipEntry ZFile in Zip)
                    {
                        try { ZFile.Extract(DestDir, ExtractExistingFileAction.OverwriteSilently); j = (int)Math.Round(((double)i / (double)TotalFiles * (double)100.00), 0); i++; if ((j >= 0) && (j <= 100))
                              {
                                  AR_Wrk.ReportProgress(j);
                              }
                        } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
                    }
                }
            }
            else
            {
                throw new FileNotFoundException("Archive not found.", ArchName);
            }
        }
Esempio n. 6
0
 /// <summary>
 /// Метод, срабатывающий при нажатии на кнопку "Вставить".
 /// </summary>
 private void HEd_T_Paste_Click(object sender, EventArgs e)
 {
     try { if (Clipboard.ContainsText())
           {
               HEd_Table.Rows[HEd_Table.CurrentRow.Index].Cells[HEd_Table.CurrentCell.ColumnIndex].Value = Clipboard.GetText();
           }
     } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
 }
Esempio n. 7
0
        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);
            }
        }
Esempio n. 8
0
        /// <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);
        }
Esempio n. 9
0
 /// <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); }
 }
Esempio n. 10
0
 /// <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); }
 }
Esempio n. 11
0
 /// <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); }
 }
Esempio n. 12
0
 /// <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); }
 }
Esempio n. 13
0
 /// <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); }
 }
Esempio n. 14
0
 /// <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); }
 }
Esempio n. 15
0
        /// <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);
        }
Esempio n. 16
0
        /// <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();
        }
Esempio n. 17
0
        /// <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); }
        }
Esempio n. 18
0
        /// <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();
        }
Esempio n. 19
0
        /// <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); }
        }
Esempio n. 20
0
        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); }
        }
Esempio n. 21
0
        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); }
        }
Esempio n. 22
0
 /// <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));
 }
Esempio n. 23
0
 /// <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); }
 }
Esempio n. 24
0
        /// <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); }
                }
            }
        }
Esempio n. 25
0
 /// <summary>
 /// Метод, информирующий основную форму о прогрессе загрузки файлов, который
 /// выполняется в отдельном потоке.
 /// </summary>
 private void DownloaderProgressChanged(object sender, DownloadProgressChangedEventArgs e)
 {
     // Отрисовываем статус в прогресс-баре...
     try { DN_PrgBr.Value = e.ProgressPercentage; } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
 }
Esempio n. 26
0
 /// <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);
                 }
             }
         }
     }
 }
Esempio n. 27
0
        /// <summary>
        /// Сохраняет графические настройки игры в реестр.
        /// </summary>
        public void WriteSettings()
        {
            // Открываеам ключ реестра для записи...
            RegistryKey ResKey = Registry.CurrentUser.OpenSubKey(RegKey, true);

            // Запишем в реестр настройки разрешения экрана...
            try { ResKey.SetValue(VSettings.ScreenWidth, _ScreenWidth, RegistryValueKind.DWord); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
            try { ResKey.SetValue(VSettings.ScreenHeight, _ScreenHeight, RegistryValueKind.DWord); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }

            // Запишем в реестр настройки режима запуска приложения (ScreenWindowed)...
            try { ResKey.SetValue(VSettings.DisplayMode, _DisplayMode, RegistryValueKind.DWord); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }

            // Запишем в реестр настройки детализации моделей...
            try { ResKey.SetValue(VSettings.ModelDetail, _ModelDetail, RegistryValueKind.DWord); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }

            // Запишем в реестр настройки детализации текстур...
            try { ResKey.SetValue(VSettings.TextureDetail, _TextureDetail, RegistryValueKind.DWord); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }

            // Запишем в реестр настройки качества шейдерных эффектов...
            try { ResKey.SetValue(VSettings.ShaderDetail, _ShaderDetail, RegistryValueKind.DWord); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }

            // Запишем в реестр настройки отражений в воде...
            try { ResKey.SetValue(VSettings.WaterDetail, _WaterDetail, RegistryValueKind.DWord); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
            try { ResKey.SetValue(VSettings.WaterReflections, _WaterReflections, RegistryValueKind.DWord); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }

            // Запишем в реестр настройки прорисовки теней...
            try { ResKey.SetValue(VSettings.ShadowDetail, _ShadowDetail, RegistryValueKind.DWord); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }

            // Запишем в реестр настройки коррекции цвета...
            try { ResKey.SetValue(VSettings.ColorCorrection, _ColorCorrection, RegistryValueKind.DWord); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }

            // Запишем в реестр настройки сглаживания...
            try { ResKey.SetValue(VSettings.AntiAliasing, _AntiAliasing, RegistryValueKind.DWord); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
            try { ResKey.SetValue(VSettings.AntiAliasQuality, _AntiAliasQuality, RegistryValueKind.DWord); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
            try { ResKey.SetValue(VSettings.AntiAliasingMSAA, _AntiAliasing, RegistryValueKind.DWord); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
            try { ResKey.SetValue(VSettings.AntiAliasQualityMSAA, _AntiAliasQuality, RegistryValueKind.DWord); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }

            // Запишем в реестр настройки фильтрации...
            try { ResKey.SetValue(VSettings.FilteringMode, _FilteringMode, RegistryValueKind.DWord); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
            try { ResKey.SetValue(VSettings.FilteringTrilinear, _FilteringTrilinear, RegistryValueKind.DWord); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }

            // Запишем в реестр настройки вертикальной синхронизации...
            try { ResKey.SetValue(VSettings.VSync, _VSync, RegistryValueKind.DWord); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }

            // Запишем в реестр настройки размытия движения...
            try { ResKey.SetValue(VSettings.MotionBlur, _MotionBlur, RegistryValueKind.DWord); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }

            // Запишем в реестр настройки режима DirectX...
            try { ResKey.SetValue(VSettings.DirectXMode, _DirectXMode, RegistryValueKind.DWord); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }

            // Запишем в реестр настройки HDR...
            try { ResKey.SetValue(VSettings.HDRMode, _HDRMode, RegistryValueKind.DWord); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }

            // Закрываем открытый ранее ключ реестра...
            ResKey.Close();
        }
Esempio n. 28
0
        /// <summary>
        /// Метод, работающий в отдельном потоке при запуске механизма создания
        /// отчёта.
        /// </summary>
        private void BwGen_DoWork(object sender, DoWorkEventArgs e)
        {
            // Сгенерируем путь для каталога с рапортами...
            string RepDir = Path.Combine(AppUserDir, "reports");

            // Проверим чтобы каталог для рапортов существовал...
            if (!Directory.Exists(RepDir))
            {
                // Не существует, поэтому создадим...
                Directory.CreateDirectory(RepDir);
            }

            // Генерируем пути к каталогам для вреенных файлов и создаём их...
            string TempDir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
            string CrDt    = FileManager.DateTime2Unix(DateTime.Now);

            if (!Directory.Exists(TempDir))
            {
                Directory.CreateDirectory(TempDir);
            }

            // Генерируем именя файлов с полными путями...
            string RepName       = String.Format("report_{0}.{1}", CrDt, "txt");
            string ArchName      = Path.Combine(RepDir, Path.ChangeExtension(RepName, ".zip"));
            string HostsFile     = FileManager.GetHostsFileFullPath(CurrentPlatform.OSType.Windows);
            string FNameRep      = Path.Combine(TempDir, RepName);
            string FNameInternal = Path.Combine(AppUserDir, Properties.Resources.DebugLogFileName);
            string FNameFPSCfg   = Path.Combine(TempDir, String.Format("fpscfg_{0}.zip", CrDt));
            string FNamePing     = Path.Combine(TempDir, String.Format("ping_{0}.log", CrDt));
            string FNameTrace    = Path.Combine(TempDir, String.Format("traceroute_{0}.log", CrDt));
            string FNameIpConfig = Path.Combine(TempDir, String.Format("ipconfig_{0}.log", CrDt));
            string FNameRouting  = Path.Combine(TempDir, String.Format("routing_{0}.log", CrDt));
            string FNameNetStat  = Path.Combine(TempDir, String.Format("netstat_{0}.log", CrDt));
            string FNameDxDiag   = Path.Combine(TempDir, String.Format("dxdiag_{0}.log", CrDt));

            // Начинаем сборку отчёта...
            try
            {
                // Генерируем основной отчёт...
                try { ProcessManager.StartProcessAndWait("msinfo32.exe", String.Format("/report \"{0}\"", FNameRep)); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }

                // Если пользователь вдруг отменил его создание, больше ничего не делаем...
                if (File.Exists(FNameRep))
                {
                    // Запускаем последовательность...
                    try { ProcessManager.StartProcessAndWait("dxdiag.exe", String.Format("/t {0}", FNameDxDiag)); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); } /* DxDiag неадекватно реагирует на кавычки в пути. */
                    try { if (SelectedGame.FPSConfigs.Count > 0)
                          {
                              FileManager.CompressFiles(SelectedGame.FPSConfigs, FNameFPSCfg);
                          }
                    } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
                    try { ProcessManager.StartProcessAndWait("cmd.exe", String.Format("/C ping steampowered.com > \"{0}\"", FNamePing)); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
                    try { ProcessManager.StartProcessAndWait("cmd.exe", String.Format("/C tracert steampowered.com > \"{0}\"", FNameTrace)); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
                    try { ProcessManager.StartProcessAndWait("cmd.exe", String.Format("/C ipconfig /all > \"{0}\"", FNameIpConfig)); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
                    try { ProcessManager.StartProcessAndWait("cmd.exe", String.Format("/C netstat -a > \"{0}\"", FNameNetStat)); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
                    try { ProcessManager.StartProcessAndWait("cmd.exe", String.Format("/C route print > \"{0}\"", FNameRouting)); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }

                    try
                    {
                        // Создаём Zip-архив...
                        using (ZipFile ZBkUp = new ZipFile(ArchName, Encoding.UTF8))
                        {
                            // Добавляем в архив созданный рапорт...
                            if (File.Exists(FNameRep))
                            {
                                ZBkUp.AddFile(FNameRep, "report");
                            }

                            // Добавляем в архив все конфиги выбранной игры...
                            if (Directory.Exists(SelectedGame.FullCfgPath))
                            {
                                ZBkUp.AddDirectory(SelectedGame.FullCfgPath, "configs");
                            }
                            if (SelectedGame.IsUsingVideoFile)
                            {
                                string GameVideo = SelectedGame.GetActualVideoFile(); if (File.Exists(GameVideo))
                                {
                                    ZBkUp.AddFile(GameVideo, "video");
                                }
                            }

                            // Добавляем в архив все краш-дампы и логи Steam...
                            if (Directory.Exists(Path.Combine(FullSteamPath, "dumps")))
                            {
                                ZBkUp.AddDirectory(Path.Combine(FullSteamPath, "dumps"), "dumps");
                            }
                            if (Directory.Exists(Path.Combine(FullSteamPath, "logs")))
                            {
                                ZBkUp.AddDirectory(Path.Combine(FullSteamPath, "logs"), "logs");
                            }

                            // Добавляем содержимое файла Hosts...
                            if (File.Exists(HostsFile))
                            {
                                ZBkUp.AddFile(HostsFile, "hosts");
                            }

                            // Добавляем в архив отчёты утилит ping, трассировки и т.д.
                            if (File.Exists(FNamePing))
                            {
                                ZBkUp.AddFile(FNamePing, "system");
                            }
                            if (File.Exists(FNameTrace))
                            {
                                ZBkUp.AddFile(FNameTrace, "system");
                            }
                            if (File.Exists(FNameIpConfig))
                            {
                                ZBkUp.AddFile(FNameIpConfig, "system");
                            }
                            if (File.Exists(FNameRouting))
                            {
                                ZBkUp.AddFile(FNameRouting, "system");
                            }
                            if (File.Exists(FNameNetStat))
                            {
                                ZBkUp.AddFile(FNameNetStat, "system");
                            }
                            if (File.Exists(FNameDxDiag))
                            {
                                ZBkUp.AddFile(FNameDxDiag, "system");
                            }
                            if (File.Exists(FNameFPSCfg))
                            {
                                ZBkUp.AddFile(FNameFPSCfg, "fps");
                            }

                            // Добавляем в архив журнал программы...
                            try { if (File.Exists(FNameInternal))
                                  {
                                      if (FileManager.GetFileSize(FNameInternal) > 0)
                                      {
                                          ZBkUp.AddFile(FNameInternal, "srcrep");
                                      }
                                  }
                            } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }

                            // Сохраняем архив...
                            ZBkUp.Save();
                        }

                        // Выводим сообщение об успешном создании отчёта...
                        MessageBox.Show(String.Format(AppStrings.RPB_ComprGen, Path.GetFileName(ArchName)), PluginName, MessageBoxButtons.OK, MessageBoxIcon.Information);

                        // Открываем каталог с отчётами в оболочке и выделяем созданный файл...
                        if (File.Exists(ArchName))
                        {
                            ProcessManager.OpenExplorer(ArchName, CurrentPlatform.OSType.Windows);
                        }
                    }
                    catch (Exception Ex)
                    {
                        CoreLib.HandleExceptionEx(AppStrings.PS_ArchFailed, Properties.Resources.AppName, Ex.Message, Ex.Source, MessageBoxIcon.Warning);
                    }
                }

                // Выполняем очистку...
                try
                {
                    // Удаляем не сжатый отчёт...
                    if (File.Exists(FNameRep))
                    {
                        File.Delete(FNameRep);
                    }

                    // Удаляем временный каталог...
                    if (Directory.Exists(TempDir))
                    {
                        Directory.Delete(TempDir, true);
                    }
                }
                catch (Exception Ex)
                {
                    CoreLib.WriteStringToLog(Ex.Message);
                }
            }
            catch (Exception Ex)
            {
                // Произошло исключение...
                CoreLib.HandleExceptionEx(AppStrings.RPB_GenException, PluginName, Ex.Message, Ex.Source, MessageBoxIcon.Warning);
            }
        }
Esempio n. 29
0
 public static void OpenWebPage(string URI)
 {
     try { Process.Start(URI); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
 }
Esempio n. 30
0
        /// <summary>
        /// Конструктор класса. Читает базу данных в формате XML и заполняет нашу структуру.
        /// </summary>
        /// <param name="CfgDbFile">Путь к БД конфигов</param>
        /// <param name="LangPrefix">Языковой код</param>
        public ConfigManager(string CfgDbFile, string LangPrefix)
        {
            // Инициализируем список...
            Configs = new List <CFGTlx>();

            // Получаем полный список доступных конфигов. Открываем поток...
            using (FileStream XMLFS = new FileStream(CfgDbFile, FileMode.Open, FileAccess.Read))
            {
                // Загружаем XML из потока...
                XmlDocument XMLD = new XmlDocument();
                XMLD.Load(XMLFS);

                // Разбираем XML файл и обходим его в цикле...
                for (int i = 0; i < XMLD.GetElementsByTagName("Config").Count; i++)
                {
                    try { Configs.Add(new CFGTlx(XMLD.GetElementsByTagName("Name")[i].InnerText, XMLD.GetElementsByTagName("FileName")[i].InnerText, XMLD.GetElementsByTagName(LangPrefix)[i].InnerText, XMLD.GetElementsByTagName("SupportedGames")[i].InnerText.Split(';'))); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
                }
            }
        }