|
|
|
|
@@ -22,10 +22,10 @@ namespace Process_Auto_Relaunch
|
|
|
|
|
public enum NotifyLevel
|
|
|
|
|
{
|
|
|
|
|
logNone = 0,
|
|
|
|
|
logAlways = 1, // ïèñàòü âåçäå
|
|
|
|
|
logUpdateStatus = 2, // ïèñàòü â ñòðîêå ñîñòîÿíèÿ
|
|
|
|
|
logHistory = 4, // ïèñàòü â îêíå èñòîðèè ïåðåçàïóñêîâ
|
|
|
|
|
logDiscord = 8 // ïèñàòü â Äèñêîðä
|
|
|
|
|
logAlways = 1, // писать везде
|
|
|
|
|
logUpdateStatus = 2, // писать в строке состояния
|
|
|
|
|
logHistory = 4, // писать в окне истории перезапусков
|
|
|
|
|
logDiscord = 8 // писать в Дискорд
|
|
|
|
|
}
|
|
|
|
|
private delegate void UpdateLogDelegate(string text, NotifyLevel level = NotifyLevel.logUpdateStatus);
|
|
|
|
|
private readonly UpdateLogDelegate updateLogDelegate;
|
|
|
|
|
@@ -45,8 +45,8 @@ namespace Process_Auto_Relaunch
|
|
|
|
|
dwhHook.Url = Settings.Default.dwhURL;
|
|
|
|
|
}
|
|
|
|
|
else if (Settings.Default.dwhEnabled) {
|
|
|
|
|
Debug.WriteLine($"Îøèáêà â URL âåá-õóêà ({Settings.Default.dwhURL}). Âûâîä â Discord îòêëþ÷åí.");
|
|
|
|
|
HistoryLog($"Îøèáêà â URL âåá-õóêà ({Settings.Default.dwhURL}). Âûâîä â Discord îòêëþ÷åí.");
|
|
|
|
|
Debug.WriteLine($"Ошибка в URL веб-хука ({Settings.Default.dwhURL}). Вывод в Discord отключен.");
|
|
|
|
|
HistoryLog($"Ошибка в URL веб-хука ({Settings.Default.dwhURL}). Вывод в Discord отключен.");
|
|
|
|
|
Settings.Default.dwhEnabled = false;
|
|
|
|
|
Settings.Default.Save();
|
|
|
|
|
}*/
|
|
|
|
|
@@ -54,7 +54,7 @@ namespace Process_Auto_Relaunch
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Ñîáûòèå çàïóñêà ôîðìû
|
|
|
|
|
/// Событие запуска формы
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
|
/// <param name="e"></param>
|
|
|
|
|
@@ -68,7 +68,7 @@ namespace Process_Auto_Relaunch
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Âîññòàíîâëåíèå íàñòðîåê
|
|
|
|
|
/// Восстановление настроек
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void LoadOldState()
|
|
|
|
|
{
|
|
|
|
|
@@ -80,7 +80,7 @@ namespace Process_Auto_Relaunch
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Ìåòîä äëÿ ñîáûòèÿ îòêëþ÷åíèÿ
|
|
|
|
|
/// Метод для события отключения
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
|
/// <param name="e"></param>
|
|
|
|
|
@@ -96,12 +96,12 @@ namespace Process_Auto_Relaunch
|
|
|
|
|
if (myBackgroundWorker.WorkerSupportsCancellation && myBackgroundWorker.IsBusy)
|
|
|
|
|
{
|
|
|
|
|
myBackgroundWorker.CancelAsync();
|
|
|
|
|
UpdateStatus("Îòìåíÿåì...",NotifyLevel.logUpdateStatus);
|
|
|
|
|
UpdateStatus("Отменяем...",NotifyLevel.logUpdateStatus);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Ìåòîä äëÿ ñîáûòèÿ âêëþ÷åíèÿ
|
|
|
|
|
/// Метод для события включения
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
|
/// <param name="e"></param>
|
|
|
|
|
@@ -116,15 +116,15 @@ namespace Process_Auto_Relaunch
|
|
|
|
|
if (String.IsNullOrEmpty(textBoxProcessName.Text))
|
|
|
|
|
{
|
|
|
|
|
error = true;
|
|
|
|
|
MessageBox.Show("Èìÿ ïðîöåññà íå ìîæåò áûòü ïóñòûì!" +
|
|
|
|
|
"\nÓêàæèòå èìÿ ïðîöåññà", "Îøèáêà", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
|
|
|
MessageBox.Show("Имя процесса не может быть пустым!" +
|
|
|
|
|
"\nУкажите имя процесса", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (String.IsNullOrEmpty(Settings.Default.startProgramPath))
|
|
|
|
|
{
|
|
|
|
|
error = true;
|
|
|
|
|
MessageBox.Show("Ïðîãðàììà äëÿ çàïóñêà íå óêàçàíà." +
|
|
|
|
|
"\nÓêàæèòå ïðîãðàììó äëÿ çàïóñêà", "Îøèáêà", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
|
|
|
MessageBox.Show("Программа для запуска не указана." +
|
|
|
|
|
"\nУкажите программу для запуска", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (error)
|
|
|
|
|
@@ -137,15 +137,15 @@ namespace Process_Auto_Relaunch
|
|
|
|
|
if (!myBackgroundWorker.IsBusy)
|
|
|
|
|
{
|
|
|
|
|
myBackgroundWorker.RunWorkerAsync();
|
|
|
|
|
Status($"Çàïóñêàåì íàáëþäåíèå...", NotifyLevel.logDiscord);
|
|
|
|
|
Status($"Запускаем наблюдение...", NotifyLevel.logDiscord);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Îáíîâëåíèå ñòàòóñà â ïðîãðàììå
|
|
|
|
|
/// Обновление статуса в программе
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="text">Òåêñò äëÿ îòîáðàæåíèÿ/îòïðàâêè </param>
|
|
|
|
|
/// <param name="level">Ôëàãè äëÿ íàçíà÷åíèÿ îòïðàâêè</param>
|
|
|
|
|
/// <param name="text">Текст для отображения/отправки </param>
|
|
|
|
|
/// <param name="level">Флаги для назначения отправки</param>
|
|
|
|
|
public void UpdateStatus( string text, NotifyLevel level )
|
|
|
|
|
{
|
|
|
|
|
if (!level.HasFlag(NotifyLevel.logAlways) && !level.HasFlag(NotifyLevel.logUpdateStatus)) return;
|
|
|
|
|
@@ -153,10 +153,10 @@ namespace Process_Auto_Relaunch
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Äîáàâëåíèå ñòðîêè â Èñòîðèè Çàïóñêîâ
|
|
|
|
|
/// Добавление строки в Истории Запусков
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="text">Òåêñò äëÿ îòîáðàæåíèÿ/îòïðàâêè </param>
|
|
|
|
|
/// <param name="level">Ôëàãè äëÿ íàçíà÷åíèÿ îòïðàâêè</param>
|
|
|
|
|
/// <param name="text">Текст для отображения/отправки </param>
|
|
|
|
|
/// <param name="level">Флаги для назначения отправки</param>
|
|
|
|
|
private void HistoryLog( string text, NotifyLevel level )
|
|
|
|
|
{
|
|
|
|
|
if (!level.HasFlag(NotifyLevel.logAlways) && !level.HasFlag(NotifyLevel.logHistory)) return;
|
|
|
|
|
@@ -164,10 +164,10 @@ namespace Process_Auto_Relaunch
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Îòïðàâêà ñòàòóñà â Discord
|
|
|
|
|
/// Отправка статуса в Discord
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="text">Òåêñò äëÿ îòîáðàæåíèÿ/îòïðàâêè </param>
|
|
|
|
|
/// <param name="level">Ôëàãè äëÿ íàçíà÷åíèÿ îòïðàâêè</param>
|
|
|
|
|
/// <param name="text">Текст для отображения/отправки </param>
|
|
|
|
|
/// <param name="level">Флаги для назначения отправки</param>
|
|
|
|
|
public void SendDiscordMessage( string text, NotifyLevel level )
|
|
|
|
|
{
|
|
|
|
|
if (!level.HasFlag(NotifyLevel.logAlways) && !level.HasFlag(NotifyLevel.logDiscord)) return;
|
|
|
|
|
@@ -183,7 +183,7 @@ namespace Process_Auto_Relaunch
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
Status($"Îøèáêà îòïðàâêè â äèñêîðä.",NotifyLevel.logHistory);
|
|
|
|
|
Status($"Ошибка отправки в дискорд.",NotifyLevel.logHistory);
|
|
|
|
|
Debug.WriteLine($"Discord messaging error: {ex.Message}");
|
|
|
|
|
//Settings.Default.dwhEnabled = false;
|
|
|
|
|
//Settings.Default.Save();
|
|
|
|
|
@@ -192,10 +192,10 @@ namespace Process_Auto_Relaunch
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Îáíîâëåíèå ñòàòóñà â ïðîãðàììå
|
|
|
|
|
/// Обновление статуса в программе
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="text">Òåêñò äëÿ îòîáðàæåíèÿ/îòïðàâêè </param>
|
|
|
|
|
/// <param name="level">Ôëàãè äëÿ íàçíà÷åíèÿ îòïðàâêè</param>
|
|
|
|
|
/// <param name="text">Текст для отображения/отправки </param>
|
|
|
|
|
/// <param name="level">Флаги для назначения отправки</param>
|
|
|
|
|
public void Status(string text, NotifyLevel level = NotifyLevel.logUpdateStatus)
|
|
|
|
|
{
|
|
|
|
|
Invoke(updateLogDelegate, text, level);
|
|
|
|
|
@@ -204,12 +204,12 @@ namespace Process_Auto_Relaunch
|
|
|
|
|
private void CheckProgramState()
|
|
|
|
|
{
|
|
|
|
|
bool watching = radioButtonEnableWathing.Checked;
|
|
|
|
|
Debug.WriteLine($"Íàáëþäåíèå: {watching}");
|
|
|
|
|
Debug.WriteLine($"Наблюдение: {watching}");
|
|
|
|
|
|
|
|
|
|
groupBoxProcessName.Enabled = !watching;
|
|
|
|
|
groupBoxProgramStart.Enabled = !watching;
|
|
|
|
|
groupBoxActions.Enabled = !watching;
|
|
|
|
|
btnShowDiscordSettings.Enabled = !watching; //îòêëþ÷àåì êíîïêó íàñòðîåê äèñêîðäà
|
|
|
|
|
btnShowDiscordSettings.Enabled = !watching; //отключаем кнопку настроек дискорда
|
|
|
|
|
|
|
|
|
|
Settings.Default.enableWatching = watching;
|
|
|
|
|
|
|
|
|
|
@@ -217,15 +217,15 @@ namespace Process_Auto_Relaunch
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Âûáîð ôàéëà äëÿ çàïóñêà
|
|
|
|
|
/// Выбор файла для запуска
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
|
/// <param name="e"></param>
|
|
|
|
|
private void ButtonSetProgramStart_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
OpenFileDialog openFile = new OpenFileDialog();
|
|
|
|
|
openFile.Filter = "Èñïîëíÿåìûå ôàéëû (*.exe)|*.exe";
|
|
|
|
|
openFile.Title = "Óêàæèòå ïðîãðàììó çàïóñêà";
|
|
|
|
|
openFile.Filter = "Исполняемые файлы (*.exe)|*.exe";
|
|
|
|
|
openFile.Title = "Укажите программу запуска";
|
|
|
|
|
|
|
|
|
|
if (openFile.ShowDialog() == DialogResult.Cancel)
|
|
|
|
|
{
|
|
|
|
|
@@ -241,7 +241,7 @@ namespace Process_Auto_Relaunch
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Ñîáûòèå ïåðåä çàêðûòèåì ôîðìû
|
|
|
|
|
/// Событие перед закрытием формы
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
|
/// <param name="e"></param>
|
|
|
|
|
@@ -275,7 +275,7 @@ namespace Process_Auto_Relaunch
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Status("Ïðîöåññ áûë çàïóùåí.", NotifyLevel.logAlways);
|
|
|
|
|
Status("Процесс был запущен.", NotifyLevel.logAlways);
|
|
|
|
|
Process.Start(path, args);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -288,23 +288,23 @@ namespace Process_Auto_Relaunch
|
|
|
|
|
{
|
|
|
|
|
if (ProcessByNameIsRuning(textBoxProcessName.Text))
|
|
|
|
|
{
|
|
|
|
|
Status($"Ïðîöåññ óæå çàïóùåí",NotifyLevel.logUpdateStatus);
|
|
|
|
|
if (i < (int)numericUpDown1.Value) SendDiscordMessage($"Ïðîöåññ {textBoxProcessName.Text} çàïóùåí.",NotifyLevel.logDiscord);
|
|
|
|
|
Status($"Процесс уже запущен",NotifyLevel.logUpdateStatus);
|
|
|
|
|
if (i < (int)numericUpDown1.Value) SendDiscordMessage($"Процесс {textBoxProcessName.Text} запущен.",NotifyLevel.logDiscord);
|
|
|
|
|
i = (int)numericUpDown1.Value;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (radioButtonRestartTimer.Checked)
|
|
|
|
|
{
|
|
|
|
|
if (i==(int)numericUpDown1.Value) Status($"Ïðîöåññ {textBoxProcessName.Text} íå íàéäåí. Çàïóñê ÷åðåç {i} ñåê",NotifyLevel.logDiscord);
|
|
|
|
|
if (i==(int)numericUpDown1.Value) Status($"Процесс {textBoxProcessName.Text} не найден. Запуск через {i} сек",NotifyLevel.logDiscord);
|
|
|
|
|
i--;
|
|
|
|
|
Status($"Ïðîöåññ {textBoxProcessName.Text} íå íàéäåí. Çàïóñê ÷åðåç {i}", NotifyLevel.logUpdateStatus);
|
|
|
|
|
Status($"Процесс {textBoxProcessName.Text} не найден. Запуск через {i}", NotifyLevel.logUpdateStatus);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (i <= 0 || radioButtonRestartNow.Checked)
|
|
|
|
|
{
|
|
|
|
|
i = (int)numericUpDown1.Value;
|
|
|
|
|
Status($"Çàïóñêàåì {textBoxProcessName.Text}", NotifyLevel.logUpdateStatus|NotifyLevel.logDiscord);
|
|
|
|
|
Status($"Запускаем {textBoxProcessName.Text}", NotifyLevel.logUpdateStatus|NotifyLevel.logDiscord);
|
|
|
|
|
ProcessStart(Settings.Default.startProgramPath, textBoxArguments.Text);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@@ -322,17 +322,17 @@ namespace Process_Auto_Relaunch
|
|
|
|
|
{
|
|
|
|
|
if (e.Cancelled)
|
|
|
|
|
{
|
|
|
|
|
Status("Íàáëþäåíèå îòìåíåíî.",NotifyLevel.logUpdateStatus|NotifyLevel.logDiscord);
|
|
|
|
|
Status("Наблюдение отменено.",NotifyLevel.logUpdateStatus|NotifyLevel.logDiscord);
|
|
|
|
|
}
|
|
|
|
|
else if (e.Error != null)
|
|
|
|
|
{
|
|
|
|
|
Status("Ïðîèçîøëà îøèáêà! Íàáëþäåíèå îñòàíîâëåíî.", NotifyLevel.logUpdateStatus | NotifyLevel.logDiscord);
|
|
|
|
|
MessageBox.Show("Error: " + e.Error.Message, "Îøèáêà", MessageBoxButtons.OK, MessageBoxIcon.Stop);
|
|
|
|
|
Status("Произошла ошибка! Наблюдение остановлено.", NotifyLevel.logUpdateStatus | NotifyLevel.logDiscord);
|
|
|
|
|
MessageBox.Show("Error: " + e.Error.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Stop);
|
|
|
|
|
radioButtonDisableWathing.Checked = true;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Status("Íàáëþäåíèå îñòàíîâëåíî.", NotifyLevel.logUpdateStatus|NotifyLevel.logDiscord);
|
|
|
|
|
Status("Наблюдение остановлено.", NotifyLevel.logUpdateStatus|NotifyLevel.logDiscord);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|