Добавьте файлы проекта.

This commit is contained in:
Vladimir
2024-05-15 18:06:17 +04:00
committed by Vladimir
parent a0ef3cf460
commit a103269e31
13 changed files with 2434 additions and 0 deletions

49
App.config Normal file
View File

@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="RelaunchProcess.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
<section name="Process_Auto_Relaunch.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
</sectionGroup>
</configSections>
<userSettings>
<RelaunchProcess.Properties.Settings>
<setting name="startProgramPath" serializeAs="String">
<value />
</setting>
<setting name="arguments" serializeAs="String">
<value />
</setting>
<setting name="saveOldState" serializeAs="String">
<value>True</value>
</setting>
<setting name="enableWatching" serializeAs="String">
<value>False</value>
</setting>
<setting name="processName" serializeAs="String">
<value />
</setting>
<setting name="checkBeforeStart" serializeAs="String">
<value>True</value>
</setting>
<setting name="restartNow" serializeAs="String">
<value>False</value>
</setting>
</RelaunchProcess.Properties.Settings>
<Process_Auto_Relaunch.Properties.Settings>
<setting name="startProgramPath" serializeAs="String">
<value/>
</setting>
<setting name="arguments" serializeAs="String">
<value/>
</setting>
<setting name="disableWathing" serializeAs="String">
<value>True</value>
</setting>
<setting name="saveOldState" serializeAs="String">
<value>True</value>
</setting>
</Process_Auto_Relaunch.Properties.Settings>
</userSettings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/></startup>
</configuration>

363
Form1.Designer.cs generated Normal file
View File

@@ -0,0 +1,363 @@
using System.Windows.Forms;
namespace Process_Auto_Relaunch
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
this.groupBoxActions = new System.Windows.Forms.GroupBox();
this.numericUpDown1 = new System.Windows.Forms.NumericUpDown();
this.label1 = new System.Windows.Forms.Label();
this.radioButtonRestartTimer = new System.Windows.Forms.RadioButton();
this.buttonSetProgramStart = new System.Windows.Forms.Button();
this.groupBoxProgramStart = new System.Windows.Forms.GroupBox();
this.labelArguments = new System.Windows.Forms.Label();
this.groupBoxProcessName = new System.Windows.Forms.GroupBox();
this.groupBoxEnabled = new System.Windows.Forms.GroupBox();
this.radioButtonEnableWathing = new System.Windows.Forms.RadioButton();
this.radioButtonDisableWathing = new System.Windows.Forms.RadioButton();
this.groupBoxStatus = new System.Windows.Forms.GroupBox();
this.labelStatus = new System.Windows.Forms.Label();
this.myBackgroundWorker = new System.ComponentModel.BackgroundWorker();
this.checkBoxSaveState = new System.Windows.Forms.CheckBox();
this.textBoxProcessName = new System.Windows.Forms.TextBox();
this.textBoxArguments = new System.Windows.Forms.TextBox();
this.labelProgramStartPath = new System.Windows.Forms.Label();
this.checkBoxCheckProcess = new System.Windows.Forms.CheckBox();
this.radioButtonRestartNow = new System.Windows.Forms.RadioButton();
this.groupBoxActions.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit();
this.groupBoxProgramStart.SuspendLayout();
this.groupBoxProcessName.SuspendLayout();
this.groupBoxEnabled.SuspendLayout();
this.groupBoxStatus.SuspendLayout();
this.SuspendLayout();
//
// groupBoxActions
//
this.groupBoxActions.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.groupBoxActions.Controls.Add(this.numericUpDown1);
this.groupBoxActions.Controls.Add(this.label1);
this.groupBoxActions.Controls.Add(this.checkBoxCheckProcess);
this.groupBoxActions.Controls.Add(this.radioButtonRestartTimer);
this.groupBoxActions.Controls.Add(this.radioButtonRestartNow);
this.groupBoxActions.Location = new System.Drawing.Point(10, 64);
this.groupBoxActions.Name = "groupBoxActions";
this.groupBoxActions.Size = new System.Drawing.Size(287, 111);
this.groupBoxActions.TabIndex = 0;
this.groupBoxActions.TabStop = false;
this.groupBoxActions.Text = "Действие после отсутствия процесса";
//
// numericUpDown1
//
this.numericUpDown1.Increment = new decimal(new int[] {
5,
0,
0,
0});
this.numericUpDown1.Location = new System.Drawing.Point(149, 19);
this.numericUpDown1.Maximum = new decimal(new int[] {
1800,
0,
0,
0});
this.numericUpDown1.Minimum = new decimal(new int[] {
5,
0,
0,
0});
this.numericUpDown1.Name = "numericUpDown1";
this.numericUpDown1.Size = new System.Drawing.Size(54, 20);
this.numericUpDown1.TabIndex = 5;
this.numericUpDown1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
this.numericUpDown1.Value = new decimal(new int[] {
30,
0,
0,
0});
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(209, 21);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(42, 13);
this.label1.TabIndex = 4;
this.label1.Text = "секунд";
//
// radioButtonRestartTimer
//
this.radioButtonRestartTimer.AutoSize = true;
this.radioButtonRestartTimer.Checked = true;
this.radioButtonRestartTimer.Location = new System.Drawing.Point(9, 19);
this.radioButtonRestartTimer.Name = "radioButtonRestartTimer";
this.radioButtonRestartTimer.Size = new System.Drawing.Size(134, 17);
this.radioButtonRestartTimer.TabIndex = 1;
this.radioButtonRestartTimer.TabStop = true;
this.radioButtonRestartTimer.Text = "Перезапустить через";
this.radioButtonRestartTimer.UseVisualStyleBackColor = true;
//
// buttonSetProgramStart
//
this.buttonSetProgramStart.Location = new System.Drawing.Point(4, 19);
this.buttonSetProgramStart.Name = "buttonSetProgramStart";
this.buttonSetProgramStart.Size = new System.Drawing.Size(67, 28);
this.buttonSetProgramStart.TabIndex = 1;
this.buttonSetProgramStart.Text = "Обзор";
this.buttonSetProgramStart.UseVisualStyleBackColor = true;
this.buttonSetProgramStart.Click += new System.EventHandler(this.buttonSetProgramStart_Click);
//
// groupBoxProgramStart
//
this.groupBoxProgramStart.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.groupBoxProgramStart.Controls.Add(this.textBoxArguments);
this.groupBoxProgramStart.Controls.Add(this.labelArguments);
this.groupBoxProgramStart.Controls.Add(this.labelProgramStartPath);
this.groupBoxProgramStart.Controls.Add(this.buttonSetProgramStart);
this.groupBoxProgramStart.Location = new System.Drawing.Point(10, 180);
this.groupBoxProgramStart.Name = "groupBoxProgramStart";
this.groupBoxProgramStart.Size = new System.Drawing.Size(287, 113);
this.groupBoxProgramStart.TabIndex = 6;
this.groupBoxProgramStart.TabStop = false;
this.groupBoxProgramStart.Text = "Запуск программы";
//
// labelArguments
//
this.labelArguments.AutoSize = true;
this.labelArguments.Location = new System.Drawing.Point(4, 72);
this.labelArguments.Name = "labelArguments";
this.labelArguments.Size = new System.Drawing.Size(153, 13);
this.labelArguments.TabIndex = 3;
this.labelArguments.Text = "Дополнительные аргументы";
//
// groupBoxProcessName
//
this.groupBoxProcessName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.groupBoxProcessName.Controls.Add(this.textBoxProcessName);
this.groupBoxProcessName.Location = new System.Drawing.Point(10, 10);
this.groupBoxProcessName.Name = "groupBoxProcessName";
this.groupBoxProcessName.Size = new System.Drawing.Size(287, 50);
this.groupBoxProcessName.TabIndex = 8;
this.groupBoxProcessName.TabStop = false;
this.groupBoxProcessName.Text = "Название наблюдаемого процесса";
//
// groupBoxEnabled
//
this.groupBoxEnabled.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.groupBoxEnabled.Controls.Add(this.checkBoxSaveState);
this.groupBoxEnabled.Controls.Add(this.radioButtonEnableWathing);
this.groupBoxEnabled.Controls.Add(this.radioButtonDisableWathing);
this.groupBoxEnabled.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.groupBoxEnabled.Location = new System.Drawing.Point(10, 298);
this.groupBoxEnabled.Name = "groupBoxEnabled";
this.groupBoxEnabled.Size = new System.Drawing.Size(287, 72);
this.groupBoxEnabled.TabIndex = 9;
this.groupBoxEnabled.TabStop = false;
this.groupBoxEnabled.Text = "Состояние";
//
// radioButtonEnableWathing
//
this.radioButtonEnableWathing.AutoSize = true;
this.radioButtonEnableWathing.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.radioButtonEnableWathing.Location = new System.Drawing.Point(106, 19);
this.radioButtonEnableWathing.Name = "radioButtonEnableWathing";
this.radioButtonEnableWathing.Size = new System.Drawing.Size(75, 17);
this.radioButtonEnableWathing.TabIndex = 1;
this.radioButtonEnableWathing.Text = "Включено";
this.radioButtonEnableWathing.UseVisualStyleBackColor = true;
this.radioButtonEnableWathing.CheckedChanged += new System.EventHandler(this.radioButtonEnableWathing_CheckedChanged);
//
// radioButtonDisableWathing
//
this.radioButtonDisableWathing.AutoSize = true;
this.radioButtonDisableWathing.Checked = true;
this.radioButtonDisableWathing.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.radioButtonDisableWathing.Location = new System.Drawing.Point(8, 19);
this.radioButtonDisableWathing.Name = "radioButtonDisableWathing";
this.radioButtonDisableWathing.Size = new System.Drawing.Size(83, 17);
this.radioButtonDisableWathing.TabIndex = 0;
this.radioButtonDisableWathing.TabStop = true;
this.radioButtonDisableWathing.Text = "Выключено";
this.radioButtonDisableWathing.UseVisualStyleBackColor = true;
this.radioButtonDisableWathing.CheckedChanged += new System.EventHandler(this.radioButtonDisableWathing_CheckedChanged);
//
// groupBoxStatus
//
this.groupBoxStatus.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.groupBoxStatus.Controls.Add(this.labelStatus);
this.groupBoxStatus.Location = new System.Drawing.Point(10, 375);
this.groupBoxStatus.Name = "groupBoxStatus";
this.groupBoxStatus.Size = new System.Drawing.Size(287, 52);
this.groupBoxStatus.TabIndex = 10;
this.groupBoxStatus.TabStop = false;
this.groupBoxStatus.Text = "Текущий статус";
//
// labelStatus
//
this.labelStatus.AutoSize = true;
this.labelStatus.Location = new System.Drawing.Point(15, 25);
this.labelStatus.Name = "labelStatus";
this.labelStatus.Size = new System.Drawing.Size(74, 13);
this.labelStatus.TabIndex = 0;
this.labelStatus.Text = "Не запущено";
//
// myBackgroundWorker
//
this.myBackgroundWorker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.BackgroundWorkerDoWork);
this.myBackgroundWorker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted);
//
// checkBoxSaveState
//
this.checkBoxSaveState.AutoSize = true;
this.checkBoxSaveState.Checked = global::RelaunchProcess.Properties.Settings.Default.saveOldState;
this.checkBoxSaveState.CheckState = System.Windows.Forms.CheckState.Checked;
this.checkBoxSaveState.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::RelaunchProcess.Properties.Settings.Default, "saveOldState", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.checkBoxSaveState.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
this.checkBoxSaveState.Location = new System.Drawing.Point(15, 41);
this.checkBoxSaveState.Name = "checkBoxSaveState";
this.checkBoxSaveState.Size = new System.Drawing.Size(201, 17);
this.checkBoxSaveState.TabIndex = 2;
this.checkBoxSaveState.Text = "Запоминать последнее состояние";
this.checkBoxSaveState.UseVisualStyleBackColor = true;
//
// textBoxProcessName
//
this.textBoxProcessName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.textBoxProcessName.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::RelaunchProcess.Properties.Settings.Default, "processName", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.textBoxProcessName.Location = new System.Drawing.Point(5, 20);
this.textBoxProcessName.Name = "textBoxProcessName";
this.textBoxProcessName.Size = new System.Drawing.Size(277, 20);
this.textBoxProcessName.TabIndex = 3;
this.textBoxProcessName.Text = global::RelaunchProcess.Properties.Settings.Default.processName;
//
// textBoxArguments
//
this.textBoxArguments.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::RelaunchProcess.Properties.Settings.Default, "arguments", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.textBoxArguments.Location = new System.Drawing.Point(5, 88);
this.textBoxArguments.Name = "textBoxArguments";
this.textBoxArguments.Size = new System.Drawing.Size(275, 20);
this.textBoxArguments.TabIndex = 4;
this.textBoxArguments.Text = global::RelaunchProcess.Properties.Settings.Default.arguments;
//
// labelProgramStartPath
//
this.labelProgramStartPath.AutoSize = true;
this.labelProgramStartPath.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::RelaunchProcess.Properties.Settings.Default, "startProgramPath", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.labelProgramStartPath.Location = new System.Drawing.Point(5, 50);
this.labelProgramStartPath.Name = "labelProgramStartPath";
this.labelProgramStartPath.Size = new System.Drawing.Size(0, 13);
this.labelProgramStartPath.TabIndex = 2;
this.labelProgramStartPath.Text = global::RelaunchProcess.Properties.Settings.Default.startProgramPath;
//
// checkBoxCheckProcess
//
this.checkBoxCheckProcess.AutoSize = true;
this.checkBoxCheckProcess.Checked = global::RelaunchProcess.Properties.Settings.Default.checkBeforeStart;
this.checkBoxCheckProcess.CheckState = System.Windows.Forms.CheckState.Checked;
this.checkBoxCheckProcess.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::RelaunchProcess.Properties.Settings.Default, "checkBeforeStart", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.checkBoxCheckProcess.Location = new System.Drawing.Point(12, 80);
this.checkBoxCheckProcess.Name = "checkBoxCheckProcess";
this.checkBoxCheckProcess.Size = new System.Drawing.Size(153, 17);
this.checkBoxCheckProcess.TabIndex = 2;
this.checkBoxCheckProcess.Text = "Не создавать дубликаты";
this.checkBoxCheckProcess.UseVisualStyleBackColor = true;
//
// radioButtonRestartNow
//
this.radioButtonRestartNow.AutoSize = true;
this.radioButtonRestartNow.Checked = global::RelaunchProcess.Properties.Settings.Default.restartNow;
this.radioButtonRestartNow.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::RelaunchProcess.Properties.Settings.Default, "restartNow", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.radioButtonRestartNow.Location = new System.Drawing.Point(8, 41);
this.radioButtonRestartNow.Name = "radioButtonRestartNow";
this.radioButtonRestartNow.Size = new System.Drawing.Size(135, 17);
this.radioButtonRestartNow.TabIndex = 0;
this.radioButtonRestartNow.Text = "Перезапускать сразу";
this.radioButtonRestartNow.UseVisualStyleBackColor = true;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(316, 445);
this.Controls.Add(this.groupBoxStatus);
this.Controls.Add(this.groupBoxEnabled);
this.Controls.Add(this.groupBoxProcessName);
this.Controls.Add(this.groupBoxProgramStart);
this.Controls.Add(this.groupBoxActions);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.Name = "Form1";
this.Text = "Relaunch Process";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);
this.Load += new System.EventHandler(this.Form1_Load);
this.groupBoxActions.ResumeLayout(false);
this.groupBoxActions.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit();
this.groupBoxProgramStart.ResumeLayout(false);
this.groupBoxProgramStart.PerformLayout();
this.groupBoxProcessName.ResumeLayout(false);
this.groupBoxProcessName.PerformLayout();
this.groupBoxEnabled.ResumeLayout(false);
this.groupBoxEnabled.PerformLayout();
this.groupBoxStatus.ResumeLayout(false);
this.groupBoxStatus.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private GroupBox groupBoxActions;
private Label label1;
private CheckBox checkBoxCheckProcess;
private RadioButton radioButtonRestartTimer;
private RadioButton radioButtonRestartNow;
private Button buttonSetProgramStart;
private TextBox textBoxProcessName;
private GroupBox groupBoxProgramStart;
private Label labelProgramStartPath;
private RadioButton radioButtonEnableWathing;
private RadioButton radioButtonDisableWathing;
private CheckBox checkBoxSaveState;
private GroupBox groupBoxProcessName;
private GroupBox groupBoxEnabled;
private GroupBox groupBoxStatus;
private TextBox textBoxArguments;
private Label labelArguments;
public Label labelStatus;
private System.ComponentModel.BackgroundWorker myBackgroundWorker;
private NumericUpDown numericUpDown1;
}
}

228
Form1.cs Normal file
View File

@@ -0,0 +1,228 @@
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Threading;
using System.Windows.Forms;
using RelaunchProcess.Properties;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace Process_Auto_Relaunch
{
public partial class Form1 : Form
{
private delegate void UpdateLogDelegate(string text);
private UpdateLogDelegate updateLogDelegate = null;
public Form1()
{
InitializeComponent();
this.updateLogDelegate = new UpdateLogDelegate(this.UpdateStatus);
myBackgroundWorker.WorkerSupportsCancellation = true;
}
/// <summary>
/// Ñîáûòèå çàïóñêà ôîðìû
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_Load(object sender, EventArgs e)
{
LoadOldState();
CheckProgramState();
}
/// <summary>
/// Âîññòàíîâëåíèå íàñòðîåê
/// </summary>
private void LoadOldState()
{
if (Settings.Default.saveOldState)
{
radioButtonEnableWathing.Checked = Settings.Default.enableWatching;
}
}
private void radioButtonDisableWathing_CheckedChanged(object sender, EventArgs e)
{
CheckProgramState();
if (!radioButtonDisableWathing.Checked)
{
return;
}
if (myBackgroundWorker.WorkerSupportsCancellation && myBackgroundWorker.IsBusy)
{
myBackgroundWorker.CancelAsync();
UpdateStatus("Îòìåíÿåì...");
}
}
private void radioButtonEnableWathing_CheckedChanged(object sender, EventArgs e)
{
if (!radioButtonEnableWathing.Checked)
{
return;
}
bool error = false;
if (String.IsNullOrEmpty(textBoxProcessName.Text))
{
error = true;
MessageBox.Show("Èìÿ ïðîöåññà íå ìîæåò áûòü ïóñòûì!" +
"\nÓêàæèòå èìÿ ïðîöåññà", "Îøèáêà", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
if (String.IsNullOrEmpty(Settings.Default.startProgramPath))
{
error = true;
MessageBox.Show("Ïðîãðàììà äëÿ çàïóñêà íå óêàçàíà." +
"\nÓêàæèòå ïðîãðàììó äëÿ çàïóñêà", "Îøèáêà", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
if (error)
{
radioButtonEnableWathing.Checked = false;
radioButtonDisableWathing.Checked = true;
return;
}
if (!myBackgroundWorker.IsBusy)
{
myBackgroundWorker.RunWorkerAsync();
}
}
private void UpdateStatus(string text)
{
labelStatus.Text = text;
}
private void Status(string text)
{
Invoke(updateLogDelegate, new[] { text });
}
private void CheckProgramState()
{
bool watching = radioButtonEnableWathing.Checked;
Debug.WriteLine($"Íàáëþäåíèå: {watching}");
groupBoxProcessName.Enabled = !watching;
groupBoxProgramStart.Enabled = !watching;
groupBoxActions.Enabled = !watching;
Settings.Default.enableWatching = watching;
}
/// <summary>
/// Âûáîð ôàéëà äëÿ çàïóñêà
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void buttonSetProgramStart_Click(object sender, EventArgs e)
{
OpenFileDialog openFile = new OpenFileDialog();
openFile.Title = "Óêàæèòå ïðîãðàììó çàïóñêà";
if (openFile.ShowDialog() == DialogResult.Cancel)
{
return;
}
//labelProgramStartPath.Text = openFile.FileName;
Settings.Default.startProgramPath = openFile.FileName;
Settings.Default.Save();
openFile.Dispose();
}
/// <summary>
/// Ñîáûòèå ïåðåä çàêðûòèåì ôîðìû
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
Settings.Default.Save();
}
private bool ProcessByNameIsRuning(string name)
{
return Process.GetProcessesByName(name).Length > 0;
}
private void ProcessStart(string path, string args)
{
if (checkBoxCheckProcess.Checked)
{
if (ProcessByNameIsRuning(path))
{
return;
}
}
Process.Start(path, args);
}
private void BackgroundWorkerDoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
int i = (int)numericUpDown1.Value;
while (!worker.CancellationPending)
{
if (ProcessByNameIsRuning(textBoxProcessName.Text))
{
Status($"Ïðîöåññ {textBoxProcessName.Text} óæå çàïóùåí");
i = (int)numericUpDown1.Value;
}
else
{
if (radioButtonRestartTimer.Checked)
{
i--;
Status($"Ïðîöåññ {textBoxProcessName.Text} íå íàéäåí. Çàïóñê ÷åðåç {i}");
}
if (i <= 0 || radioButtonRestartNow.Checked)
{
Status("Çàïóñêàåì...");
ProcessStart(Settings.Default.startProgramPath, textBoxArguments.Text);
}
}
Thread.Sleep(1000);
}
if (worker.CancellationPending)
{
e.Cancel = true;
}
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Cancelled)
{
Status("Íàáëþäåíèå îòìåíåíî.");
}
else if (e.Error != null)
{
MessageBox.Show("Error: " + e.Error.Message, "Îøèáêà", MessageBoxButtons.OK, MessageBoxIcon.Stop);
Status("Ïðîèçîøëà îøèáêà. Íàáëþäåíèå îñòàíîâëåíî!");
radioButtonDisableWathing.Checked = true;
}
else
{
Status("Íàáëþäåíèå îñòàíîâëåíî.");
}
}
}
}

1256
Form1.resx Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,121 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{B48F106C-F4E2-4BFB-9BAA-42FC13C03FDD}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>RelaunchProcess</RootNamespace>
<AssemblyName>Relaunch Process</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<StartupObject>RelaunchProcess.Program</StartupObject>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>restart_process_sync_loading_refresh_circular_arrow_reload_icon_258809.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<Content Include="restart_process_sync_loading_refresh_circular_arrow_reload_icon_258809.ico" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.8">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.8 %28x86 и x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

25
Process Auto Relaunch.sln Normal file
View File

@@ -0,0 +1,25 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.9.34622.214
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Process Auto Relaunch", "Process Auto Relaunch.csproj", "{A077533B-14A5-4A53-B7DF-B627C6F627C9}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{A077533B-14A5-4A53-B7DF-B627C6F627C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A077533B-14A5-4A53-B7DF-B627C6F627C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A077533B-14A5-4A53-B7DF-B627C6F627C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A077533B-14A5-4A53-B7DF-B627C6F627C9}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4D47AE52-BA80-480A-90CD-19011F1823D6}
EndGlobalSection
EndGlobal

25
Program.cs Normal file
View File

@@ -0,0 +1,25 @@
using Process_Auto_Relaunch;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
using System.Windows.Forms;
using RelaunchProcess.Properties;
namespace RelaunchProcess
{
internal static class Program
{
/// <summary>
/// Ãëàâíàÿ òî÷êà âõîäà äëÿ ïðèëîæåíèÿ.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}

View File

@@ -0,0 +1,33 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Управление общими сведениями о сборке осуществляется посредством следующего
// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения,
// общие сведения об этой сборке.
[assembly: AssemblyTitle("Relaunch Process")]
[assembly: AssemblyDescription("Утилита для перезапуска процессов после их завершения")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("RelaunchProcess")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Параметр ComVisible со значением FALSE делает типы в сборке невидимыми
// для COM-компонентов. Если требуется обратиться к типу в этой сборке через
// COM, задайте атрибуту ComVisible значение TRUE для этого типа.
[assembly: ComVisible(false)]
// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM
[assembly: Guid("e74041ec-13e1-4a10-b0a4-d7f219a83a30")]
// Сведения о версии сборки состоят из следующих четырех значений:
//
// Основной номер версии
// Дополнительный номер версии
// Номер сборки
// Редакция
//
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

73
Properties/Resources.Designer.cs generated Normal file
View File

@@ -0,0 +1,73 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Этот код создан программой.
// Исполняемая версия:4.0.30319.42000
//
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// </auto-generated>
//------------------------------------------------------------------------------
namespace RelaunchProcess.Properties {
using System;
/// <summary>
/// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
/// </summary>
// Этот класс создан автоматически классом StronglyTypedResourceBuilder
// с помощью такого средства, как ResGen или Visual Studio.
// Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
// с параметром /str или перестройте свой проект VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("RelaunchProcess.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Перезаписывает свойство CurrentUICulture текущего потока для всех
/// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Поиск локализованного ресурса типа System.Drawing.Icon, аналогичного (Значок).
/// </summary>
internal static System.Drawing.Icon restart_process_sync_loading_refresh_circular_arrow_reload_icon_258809 {
get {
object obj = ResourceManager.GetObject("restart_process_sync_loading_refresh_circular_arrow_reload_icon_258809", resourceCulture);
return ((System.Drawing.Icon)(obj));
}
}
}
}

124
Properties/Resources.resx Normal file
View File

@@ -0,0 +1,124 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="restart_process_sync_loading_refresh_circular_arrow_reload_icon_258809" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\restart_process_sync_loading_refresh_circular_arrow_reload_icon_258809.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

110
Properties/Settings.Designer.cs generated Normal file
View File

@@ -0,0 +1,110 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Этот код создан программой.
// Исполняемая версия:4.0.30319.42000
//
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// </auto-generated>
//------------------------------------------------------------------------------
namespace RelaunchProcess.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.9.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string startProgramPath {
get {
return ((string)(this["startProgramPath"]));
}
set {
this["startProgramPath"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string arguments {
get {
return ((string)(this["arguments"]));
}
set {
this["arguments"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool saveOldState {
get {
return ((bool)(this["saveOldState"]));
}
set {
this["saveOldState"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool enableWatching {
get {
return ((bool)(this["enableWatching"]));
}
set {
this["enableWatching"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string processName {
get {
return ((string)(this["processName"]));
}
set {
this["processName"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool checkBeforeStart {
get {
return ((bool)(this["checkBeforeStart"]));
}
set {
this["checkBeforeStart"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool restartNow {
get {
return ((bool)(this["restartNow"]));
}
set {
this["restartNow"] = value;
}
}
}
}

View File

@@ -0,0 +1,27 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="WindowsFormsApp1.Properties" GeneratedClassName="Settings">
<Profiles />
<Settings>
<Setting Name="startProgramPath" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="arguments" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="saveOldState" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="enableWatching" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="processName" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="checkBeforeStart" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="restartNow" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
</Settings>
</SettingsFile>

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB