diff --git a/.github/workflows/build-artifact.yml b/.github/workflows/build-artifact.yml index 8828060..7c5b16f 100644 --- a/.github/workflows/build-artifact.yml +++ b/.github/workflows/build-artifact.yml @@ -70,4 +70,5 @@ jobs: GDPIControl\publish\${{ matrix.framework }}\*.dll GDPIControl\publish\${{ matrix.framework }}\GDPI\**\* GDPIControl\publish\${{ matrix.framework }}\GDPIControl.runtimeconfig.json + GDPIControl\publish\${{ matrix.framework }}\GDPIControl.exe.config if-no-files-found: error diff --git a/GDPIControl/App.config b/GDPIControl/App.config index 437ae48..fb168da 100644 --- a/GDPIControl/App.config +++ b/GDPIControl/App.config @@ -14,7 +14,7 @@ Black - Segoe UI, 8.25pt + Segoe UI, 9pt diff --git a/GDPIControl/Config.cs b/GDPIControl/Config.cs index d474b42..47bd7be 100644 --- a/GDPIControl/Config.cs +++ b/GDPIControl/Config.cs @@ -14,7 +14,8 @@ internal static class Config Modeset = Modeset.M9, CustomSettings1 = new GDPISettings(), CustomSettings2 = new GDPISettings(), - CustomSettings3 = new GDPISettings() + CustomSettings3 = new GDPISettings(), + StopDriver = true }; public static void Load() diff --git a/GDPIControl/Extensions/FormExtensions.cs b/GDPIControl/Extensions/FormExtensions.cs index 2cb3354..42ea826 100644 --- a/GDPIControl/Extensions/FormExtensions.cs +++ b/GDPIControl/Extensions/FormExtensions.cs @@ -1,10 +1,18 @@ -using System; +using GDPIControl.Properties; +using System; using System.Windows.Forms; namespace GDPIControl.Extensions { internal static class FormExtensions { + public static void BindSettings(this Form form) + { + form.DataBindings.Add(new Binding("Font", Settings.Default, "Font", true, DataSourceUpdateMode.OnPropertyChanged)); + form.DataBindings.Add(new Binding("ForeColor", Settings.Default, "ForeColor", true, DataSourceUpdateMode.OnPropertyChanged)); + form.DataBindings.Add(new Binding("BackColor", Settings.Default, "BackColor", true, DataSourceUpdateMode.OnPropertyChanged)); + } + public static DialogResult ShowError(this Form form, Exception exception) { return MessageBox.Show(form, exception.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); diff --git a/GDPIControl/FormMain.Designer.cs b/GDPIControl/FormMain.Designer.cs index e9b0771..72cb875 100644 --- a/GDPIControl/FormMain.Designer.cs +++ b/GDPIControl/FormMain.Designer.cs @@ -37,14 +37,7 @@ private void InitializeComponent() MI_Show = new System.Windows.Forms.ToolStripMenuItem(); MI_Close = new System.Windows.Forms.ToolStripMenuItem(); FormMenu = new System.Windows.Forms.MenuStrip(); - toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); - saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - loadToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - deleteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - toolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem(); - MI_Minimized = new System.Windows.Forms.ToolStripMenuItem(); - MI_Autostart = new System.Windows.Forms.ToolStripMenuItem(); - MI_Logon = new System.Windows.Forms.ToolStripMenuItem(); + MI_Settings = new System.Windows.Forms.ToolStripMenuItem(); toolStripMenuItem3 = new System.Windows.Forms.ToolStripMenuItem(); MI_Blacklist = new System.Windows.Forms.ToolStripMenuItem(); MI_Userlist = new System.Windows.Forms.ToolStripMenuItem(); @@ -125,7 +118,7 @@ private void InitializeComponent() // // MI_Show // - MI_Show.Image = icons8.settings16; + MI_Show.Image = icons8.Settings16; MI_Show.Name = "MI_Show"; MI_Show.Size = new System.Drawing.Size(172, 22); MI_Show.Text = "Show GDPIControl"; @@ -133,7 +126,7 @@ private void InitializeComponent() // // MI_Close // - MI_Close.Image = icons8.shutdown16; + MI_Close.Image = icons8.Shutdown16; MI_Close.Name = "MI_Close"; MI_Close.Size = new System.Drawing.Size(172, 22); MI_Close.Text = "Close GDPIControl"; @@ -141,7 +134,7 @@ private void InitializeComponent() // // FormMenu // - FormMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { toolStripMenuItem1, toolStripMenuItem2, toolStripMenuItem3, MI_About, gDPIToolStripMenuItem }); + FormMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { MI_Settings, toolStripMenuItem3, MI_About, gDPIToolStripMenuItem }); FormMenu.Location = new System.Drawing.Point(0, 0); FormMenu.Name = "FormMenu"; FormMenu.Padding = new System.Windows.Forms.Padding(5, 2, 0, 2); @@ -149,63 +142,13 @@ private void InitializeComponent() FormMenu.TabIndex = 1; FormMenu.Text = "menuStrip1"; // - // toolStripMenuItem1 + // MI_Settings // - toolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { saveToolStripMenuItem, loadToolStripMenuItem, deleteToolStripMenuItem }); - toolStripMenuItem1.Enabled = false; - toolStripMenuItem1.Name = "toolStripMenuItem1"; - toolStripMenuItem1.Size = new System.Drawing.Size(58, 20); - toolStripMenuItem1.Text = "Profiles"; - toolStripMenuItem1.Visible = false; - // - // saveToolStripMenuItem - // - saveToolStripMenuItem.Name = "saveToolStripMenuItem"; - saveToolStripMenuItem.Size = new System.Drawing.Size(107, 22); - saveToolStripMenuItem.Text = "Save"; - // - // loadToolStripMenuItem - // - loadToolStripMenuItem.Name = "loadToolStripMenuItem"; - loadToolStripMenuItem.Size = new System.Drawing.Size(107, 22); - loadToolStripMenuItem.Text = "Load"; - // - // deleteToolStripMenuItem - // - deleteToolStripMenuItem.Name = "deleteToolStripMenuItem"; - deleteToolStripMenuItem.Size = new System.Drawing.Size(107, 22); - deleteToolStripMenuItem.Text = "Delete"; - // - // toolStripMenuItem2 - // - toolStripMenuItem2.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { MI_Minimized, MI_Autostart, MI_Logon }); - toolStripMenuItem2.Name = "toolStripMenuItem2"; - toolStripMenuItem2.Size = new System.Drawing.Size(104, 20); - toolStripMenuItem2.Text = "Control Settings"; - // - // MI_Minimized - // - MI_Minimized.CheckOnClick = true; - MI_Minimized.Name = "MI_Minimized"; - MI_Minimized.Size = new System.Drawing.Size(172, 22); - MI_Minimized.Text = "Launch minimized"; - MI_Minimized.CheckedChanged += MI_Minimized_CheckedChanged; - // - // MI_Autostart - // - MI_Autostart.CheckOnClick = true; - MI_Autostart.Name = "MI_Autostart"; - MI_Autostart.Size = new System.Drawing.Size(172, 22); - MI_Autostart.Text = "Autostart GDPI"; - MI_Autostart.CheckedChanged += MI_Autostart_CheckedChanged; - // - // MI_Logon - // - MI_Logon.CheckOnClick = true; - MI_Logon.Name = "MI_Logon"; - MI_Logon.Size = new System.Drawing.Size(172, 22); - MI_Logon.Text = "Launch on logon"; - MI_Logon.Click += MI_Logon_Click; + MI_Settings.Image = icons8.Settings16; + MI_Settings.Name = "MI_Settings"; + MI_Settings.Size = new System.Drawing.Size(77, 20); + MI_Settings.Text = "Settings"; + MI_Settings.Click += MI_Settings_Click; // // toolStripMenuItem3 // @@ -231,7 +174,7 @@ private void InitializeComponent() // MI_About // MI_About.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; - MI_About.Image = icons8.info16; + MI_About.Image = icons8.Info16; MI_About.Name = "MI_About"; MI_About.Size = new System.Drawing.Size(68, 20); MI_About.Text = "About"; @@ -264,7 +207,7 @@ private void InitializeComponent() tableLayoutPanel1.Controls.Add(B_Close, 2, 0); tableLayoutPanel1.Controls.Add(B_Start, 1, 0); tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Bottom; - tableLayoutPanel1.Location = new System.Drawing.Point(0, 248); + tableLayoutPanel1.Location = new System.Drawing.Point(0, 238); tableLayoutPanel1.Name = "tableLayoutPanel1"; tableLayoutPanel1.RowCount = 1; tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); @@ -291,7 +234,7 @@ private void InitializeComponent() B_Close.Anchor = System.Windows.Forms.AnchorStyles.Right; B_Close.AutoSize = true; B_Close.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - B_Close.Image = icons8.shutdown16; + B_Close.Image = icons8.Shutdown16; B_Close.Location = new System.Drawing.Point(398, 3); B_Close.Name = "B_Close"; B_Close.Padding = new System.Windows.Forms.Padding(1); @@ -616,10 +559,10 @@ private void InitializeComponent() // // FormMain // - AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); - AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; + AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; BackColor = System.Drawing.Color.FromArgb(250, 250, 250); - ClientSize = new System.Drawing.Size(534, 281); + ClientSize = new System.Drawing.Size(534, 271); Controls.Add(tableLayoutPanel2); Controls.Add(flowLayoutPanel1); Controls.Add(tableLayoutPanel1); @@ -628,6 +571,7 @@ private void InitializeComponent() Icon = (System.Drawing.Icon)resources.GetObject("$this.Icon"); MainMenuStrip = FormMenu; MaximizeBox = false; + MaximumSize = new System.Drawing.Size(650, 350); MinimizeBox = false; MinimumSize = new System.Drawing.Size(550, 310); Name = "FormMain"; @@ -664,16 +608,10 @@ private void InitializeComponent() private System.Windows.Forms.NotifyIcon TrayControl; private System.Windows.Forms.ContextMenuStrip TrayMenu; private System.Windows.Forms.MenuStrip FormMenu; - private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1; - private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem2; - private System.Windows.Forms.ToolStripMenuItem MI_Logon; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem3; private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; private System.Windows.Forms.Button B_Close; private System.Windows.Forms.Button B_Start; - private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem loadToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem deleteToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem MI_Userlist; private System.Windows.Forms.ToolStripMenuItem MI_Blacklist; private System.Windows.Forms.ToolStripMenuItem MI_About; @@ -691,8 +629,6 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripMenuItem MI_Stop; private System.Windows.Forms.ToolStripMenuItem MI_Show; private System.Windows.Forms.ToolStripMenuItem MI_Close; - private System.Windows.Forms.ToolStripMenuItem MI_Minimized; - private System.Windows.Forms.ToolStripMenuItem MI_Autostart; private System.Windows.Forms.RadioButton RB_M6; private System.Windows.Forms.RadioButton RB_Custom_2; private System.Windows.Forms.Button B_Edit; @@ -710,5 +646,6 @@ private void InitializeComponent() private System.Windows.Forms.RadioButton RB_M9; private System.Windows.Forms.ToolStripMenuItem gDPIToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem downloadToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem MI_Settings; } } \ No newline at end of file diff --git a/GDPIControl/FormMain.cs b/GDPIControl/FormMain.cs index ad96447..bada766 100644 --- a/GDPIControl/FormMain.cs +++ b/GDPIControl/FormMain.cs @@ -21,6 +21,7 @@ public partial class FormMain : Form public FormMain() { InitializeComponent(); + this.BindSettings(); CustomModesets = new() { Modeset.Custom1, Modeset.Custom2, @@ -42,10 +43,6 @@ public FormMain() (RB_Custom_3,Modeset.Custom3) }; RBModesets.First(X => X.Modeset == Settings.Modeset).Button.Checked = true; - MI_Autostart.Checked = Settings.AutostartGDPI; - MI_Minimized.Checked = Settings.LaunchMinimazed; - MI_Logon.Checked = ControlTask.IsRegistered; - BS_ControlSettings.DataSource = Settings; RefreshUI(); @@ -60,6 +57,10 @@ private void CloseGDPIControl() TrayControl.Visible = false; TrayControl.Dispose(); RefreshArguments(); + if (Settings.StopDriver) + { + GDPIProcess.StopDriver(); + } Application.Exit(); } @@ -159,6 +160,12 @@ private void MI_About_Click(object sender, EventArgs e) F.ShowDialog(this); } + private void MI_Settings_Click(object sender, EventArgs e) + { + using var F = new FormSettings(); + F.ShowDialog(this); + } + private void RB_CheckedChanged(object sender, EventArgs e) { var RB = (RadioButton)sender; @@ -191,33 +198,6 @@ private void MI_Userlist_Click(object sender, EventArgs e) #endregion Lists - #region Control settings - - private void MI_Autostart_CheckedChanged(object sender, EventArgs e) - { - Config.Current.AutostartGDPI = MI_Autostart.Checked; - } - - private void MI_Logon_Click(object sender, EventArgs e) - { - if (!ControlTask.IsRegistered) - { - ControlTask.Register(); - } - else - { - ControlTask.Delete(); - } - MI_Logon.Checked = ControlTask.IsRegistered; - } - - private void MI_Minimized_CheckedChanged(object sender, EventArgs e) - { - Config.Current.LaunchMinimazed = MI_Minimized.Checked; - } - - #endregion Control settings - #region Tray private void MI_Close_Click(object sender, EventArgs e) => CloseGDPIControl(); diff --git a/GDPIControl/Forms/FormAbout.cs b/GDPIControl/Forms/FormAbout.cs index e6e82b8..58bcf5a 100644 --- a/GDPIControl/Forms/FormAbout.cs +++ b/GDPIControl/Forms/FormAbout.cs @@ -1,4 +1,5 @@ -using System.Diagnostics; +using GDPIControl.Extensions; +using System.Diagnostics; using System.Windows.Forms; namespace GDPIControl @@ -8,6 +9,7 @@ public partial class FormAbout : Form public FormAbout() { InitializeComponent(); + this.BindSettings(); L_Version.Text = $"v{Application.ProductVersion}"; } diff --git a/GDPIControl/Forms/FormBlacklist.cs b/GDPIControl/Forms/FormBlacklist.cs index 8251914..949f03f 100644 --- a/GDPIControl/Forms/FormBlacklist.cs +++ b/GDPIControl/Forms/FormBlacklist.cs @@ -18,6 +18,7 @@ public partial class FormBlacklist : Form public FormBlacklist() { InitializeComponent(); + this.BindSettings(); RBtoURI.Add(RB_AZ, @"https://antizapret.prostovpn.org/domains-export.txt"); RBtoURI.Add(RB_AZ1, @"https://p.thenewone.lol/domains-export.txt"); RBtoURI.Add(RB_AZ2, @"https://mirror.thetahex.ru/?key=blacklist-gdpi"); diff --git a/GDPIControl/Forms/FormGDPISettings.Designer.cs b/GDPIControl/Forms/FormGDPISettings.Designer.cs index 08773a6..7d9329d 100644 --- a/GDPIControl/Forms/FormGDPISettings.Designer.cs +++ b/GDPIControl/Forms/FormGDPISettings.Designer.cs @@ -191,7 +191,7 @@ private void InitializeComponent() flowLayoutPanel4.Location = new System.Drawing.Point(0, 24); flowLayoutPanel4.Name = "flowLayoutPanel4"; flowLayoutPanel4.Padding = new System.Windows.Forms.Padding(0, 0, 10, 0); - flowLayoutPanel4.Size = new System.Drawing.Size(634, 518); + flowLayoutPanel4.Size = new System.Drawing.Size(634, 495); flowLayoutPanel4.TabIndex = 8; flowLayoutPanel4.WrapContents = false; // @@ -1256,63 +1256,63 @@ private void InitializeComponent() // MI_M1 // MI_M1.Name = "MI_M1"; - MI_M1.Size = new System.Drawing.Size(180, 22); + MI_M1.Size = new System.Drawing.Size(129, 22); MI_M1.Text = "Modeset 1"; MI_M1.Click += MI_M1_Click; // // MI_M2 // MI_M2.Name = "MI_M2"; - MI_M2.Size = new System.Drawing.Size(180, 22); + MI_M2.Size = new System.Drawing.Size(129, 22); MI_M2.Text = "Modeset 2"; MI_M2.Click += MI_M2_Click; // // MI_M3 // MI_M3.Name = "MI_M3"; - MI_M3.Size = new System.Drawing.Size(180, 22); + MI_M3.Size = new System.Drawing.Size(129, 22); MI_M3.Text = "Modeset 3"; MI_M3.Click += MI_M3_Click; // // MI_M4 // MI_M4.Name = "MI_M4"; - MI_M4.Size = new System.Drawing.Size(180, 22); + MI_M4.Size = new System.Drawing.Size(129, 22); MI_M4.Text = "Modeset 4"; MI_M4.Click += MI_M4_Click; // // MI_M5 // MI_M5.Name = "MI_M5"; - MI_M5.Size = new System.Drawing.Size(180, 22); + MI_M5.Size = new System.Drawing.Size(129, 22); MI_M5.Text = "Modeset 5"; MI_M5.Click += MI_M5_Click; // // MI_M6 // MI_M6.Name = "MI_M6"; - MI_M6.Size = new System.Drawing.Size(180, 22); + MI_M6.Size = new System.Drawing.Size(129, 22); MI_M6.Text = "Modeset 6"; MI_M6.Click += MI_M6_Click; // // MI_M7 // MI_M7.Name = "MI_M7"; - MI_M7.Size = new System.Drawing.Size(180, 22); + MI_M7.Size = new System.Drawing.Size(129, 22); MI_M7.Text = "Modeset 7"; MI_M7.Click += MI_M7_Click; // // MI_M8 // MI_M8.Name = "MI_M8"; - MI_M8.Size = new System.Drawing.Size(180, 22); + MI_M8.Size = new System.Drawing.Size(129, 22); MI_M8.Text = "Modeset 8"; MI_M8.Click += MI_M8_Click; // // MI_M9 // MI_M9.Name = "MI_M9"; - MI_M9.Size = new System.Drawing.Size(180, 22); + MI_M9.Size = new System.Drawing.Size(129, 22); MI_M9.Text = "Modeset 9"; MI_M9.Click += MI_M9_Click; // @@ -1341,7 +1341,7 @@ private void InitializeComponent() tableLayoutPanel1.Controls.Add(CB_Manual, 0, 1); tableLayoutPanel1.Controls.Add(flowLayoutPanel1, 1, 1); tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Bottom; - tableLayoutPanel1.Location = new System.Drawing.Point(0, 542); + tableLayoutPanel1.Location = new System.Drawing.Point(0, 519); tableLayoutPanel1.Name = "tableLayoutPanel1"; tableLayoutPanel1.RowCount = 2; tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); @@ -1378,13 +1378,14 @@ private void InitializeComponent() AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; BackColor = System.Drawing.Color.FromArgb(250, 250, 250); - ClientSize = new System.Drawing.Size(634, 604); + ClientSize = new System.Drawing.Size(634, 581); ControlBox = false; Controls.Add(flowLayoutPanel4); Controls.Add(tableLayoutPanel1); Controls.Add(menuStrip1); MainMenuStrip = menuStrip1; Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + MaximumSize = new System.Drawing.Size(700, 650); MinimumSize = new System.Drawing.Size(650, 620); Name = "FormGDPISettings"; ShowInTaskbar = false; diff --git a/GDPIControl/Forms/FormGDPISettings.cs b/GDPIControl/Forms/FormGDPISettings.cs index 98f6fcb..0049038 100644 --- a/GDPIControl/Forms/FormGDPISettings.cs +++ b/GDPIControl/Forms/FormGDPISettings.cs @@ -13,6 +13,7 @@ public partial class FormGDPISettings : Form public FormGDPISettings(ControlSettings settings) { InitializeComponent(); + this.BindSettings(); Settings = settings; GDPISettings = (GDPISettings)(Settings.Modeset switch { diff --git a/GDPIControl/Forms/FormSettings.Designer.cs b/GDPIControl/Forms/FormSettings.Designer.cs new file mode 100644 index 0000000..11380ee --- /dev/null +++ b/GDPIControl/Forms/FormSettings.Designer.cs @@ -0,0 +1,195 @@ +namespace GDPIControl.Forms +{ + partial class FormSettings + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + CB_Minimized = new System.Windows.Forms.CheckBox(); + flowLayoutPanel3 = new System.Windows.Forms.FlowLayoutPanel(); + CB_AutostartGDPIControl = new System.Windows.Forms.CheckBox(); + CB_AutostartGDPI = new System.Windows.Forms.CheckBox(); + CB_StopDriver = new System.Windows.Forms.CheckBox(); + tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); + B_OK = new System.Windows.Forms.Button(); + B_Cancel = new System.Windows.Forms.Button(); + flowLayoutPanel3.SuspendLayout(); + tableLayoutPanel1.SuspendLayout(); + flowLayoutPanel1.SuspendLayout(); + SuspendLayout(); + // + // CB_Minimized + // + CB_Minimized.AutoSize = true; + CB_Minimized.Location = new System.Drawing.Point(3, 28); + CB_Minimized.Name = "CB_Minimized"; + CB_Minimized.Size = new System.Drawing.Size(109, 19); + CB_Minimized.TabIndex = 7; + CB_Minimized.Text = "Start minimized"; + // + // flowLayoutPanel3 + // + flowLayoutPanel3.AutoSize = true; + flowLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + flowLayoutPanel3.Controls.Add(CB_AutostartGDPIControl); + flowLayoutPanel3.Controls.Add(CB_Minimized); + flowLayoutPanel3.Controls.Add(CB_AutostartGDPI); + flowLayoutPanel3.Controls.Add(CB_StopDriver); + flowLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Top; + flowLayoutPanel3.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + flowLayoutPanel3.Location = new System.Drawing.Point(0, 0); + flowLayoutPanel3.Name = "flowLayoutPanel3"; + flowLayoutPanel3.Size = new System.Drawing.Size(284, 100); + flowLayoutPanel3.TabIndex = 8; + flowLayoutPanel3.WrapContents = false; + // + // CB_AutostartGDPIControl + // + CB_AutostartGDPIControl.AutoSize = true; + CB_AutostartGDPIControl.Location = new System.Drawing.Point(3, 3); + CB_AutostartGDPIControl.Name = "CB_AutostartGDPIControl"; + CB_AutostartGDPIControl.Size = new System.Drawing.Size(144, 19); + CB_AutostartGDPIControl.TabIndex = 7; + CB_AutostartGDPIControl.Text = "Autostart GDPIControl"; + // + // CB_AutostartGDPI + // + CB_AutostartGDPI.AutoSize = true; + CB_AutostartGDPI.Location = new System.Drawing.Point(3, 53); + CB_AutostartGDPI.Name = "CB_AutostartGDPI"; + CB_AutostartGDPI.Size = new System.Drawing.Size(267, 19); + CB_AutostartGDPI.TabIndex = 7; + CB_AutostartGDPI.Text = "Start GoodbyeDPI when GDPControl is started"; + // + // CB_StopDriver + // + CB_StopDriver.AutoSize = true; + CB_StopDriver.Location = new System.Drawing.Point(3, 78); + CB_StopDriver.Name = "CB_StopDriver"; + CB_StopDriver.Size = new System.Drawing.Size(213, 19); + CB_StopDriver.TabIndex = 7; + CB_StopDriver.Text = "Stop WinDivert on GDPIControl exit"; + // + // tableLayoutPanel1 + // + tableLayoutPanel1.AutoSize = true; + tableLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + tableLayoutPanel1.ColumnCount = 2; + tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + tableLayoutPanel1.Controls.Add(flowLayoutPanel1, 1, 0); + tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Bottom; + tableLayoutPanel1.Location = new System.Drawing.Point(0, 108); + tableLayoutPanel1.Name = "tableLayoutPanel1"; + tableLayoutPanel1.RowCount = 1; + tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + tableLayoutPanel1.Size = new System.Drawing.Size(284, 33); + tableLayoutPanel1.TabIndex = 9; + // + // flowLayoutPanel1 + // + flowLayoutPanel1.Anchor = System.Windows.Forms.AnchorStyles.Right; + flowLayoutPanel1.AutoSize = true; + flowLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + flowLayoutPanel1.Controls.Add(B_OK); + flowLayoutPanel1.Controls.Add(B_Cancel); + flowLayoutPanel1.Location = new System.Drawing.Point(150, 0); + flowLayoutPanel1.Margin = new System.Windows.Forms.Padding(0); + flowLayoutPanel1.Name = "flowLayoutPanel1"; + flowLayoutPanel1.Size = new System.Drawing.Size(134, 33); + flowLayoutPanel1.TabIndex = 9; + flowLayoutPanel1.WrapContents = false; + // + // B_OK + // + B_OK.Anchor = System.Windows.Forms.AnchorStyles.None; + B_OK.AutoSize = true; + B_OK.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + B_OK.Image = icons8.Ok16; + B_OK.Location = new System.Drawing.Point(3, 3); + B_OK.Name = "B_OK"; + B_OK.Padding = new System.Windows.Forms.Padding(1); + B_OK.Size = new System.Drawing.Size(51, 27); + B_OK.TabIndex = 1; + B_OK.Text = "OK"; + B_OK.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; + B_OK.UseVisualStyleBackColor = true; + B_OK.Click += B_OK_Click; + // + // B_Cancel + // + B_Cancel.AutoSize = true; + B_Cancel.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + B_Cancel.Image = icons8.Cancel16; + B_Cancel.Location = new System.Drawing.Point(60, 3); + B_Cancel.Name = "B_Cancel"; + B_Cancel.Padding = new System.Windows.Forms.Padding(1); + B_Cancel.Size = new System.Drawing.Size(71, 27); + B_Cancel.TabIndex = 5; + B_Cancel.Text = "Cancel"; + B_Cancel.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; + B_Cancel.UseVisualStyleBackColor = true; + B_Cancel.Click += B_Cancel_Click; + // + // FormSettings + // + AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + BackColor = System.Drawing.Color.FromArgb(250, 250, 250); + ClientSize = new System.Drawing.Size(284, 141); + ControlBox = false; + Controls.Add(tableLayoutPanel1); + Controls.Add(flowLayoutPanel3); + MaximumSize = new System.Drawing.Size(400, 200); + MinimumSize = new System.Drawing.Size(300, 180); + Name = "FormSettings"; + ShowInTaskbar = false; + StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + Text = "Settings"; + flowLayoutPanel3.ResumeLayout(false); + flowLayoutPanel3.PerformLayout(); + tableLayoutPanel1.ResumeLayout(false); + tableLayoutPanel1.PerformLayout(); + flowLayoutPanel1.ResumeLayout(false); + flowLayoutPanel1.PerformLayout(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private System.Windows.Forms.CheckBox CB_Minimized; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel3; + private System.Windows.Forms.CheckBox CB_AutostartGDPIControl; + private System.Windows.Forms.CheckBox CB_AutostartGDPI; + private System.Windows.Forms.CheckBox CB_StopDriver; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; + private System.Windows.Forms.Button B_OK; + private System.Windows.Forms.Button B_Cancel; + } +} \ No newline at end of file diff --git a/GDPIControl/Forms/FormSettings.cs b/GDPIControl/Forms/FormSettings.cs new file mode 100644 index 0000000..053c8f5 --- /dev/null +++ b/GDPIControl/Forms/FormSettings.cs @@ -0,0 +1,52 @@ +using GDPIControl.Extensions; +using GDPIControl.Model; +using System; +using System.Windows.Forms; + +namespace GDPIControl.Forms +{ + public partial class FormSettings : Form + { + private readonly ControlSettings Settings = Config.Current; + + public FormSettings() + { + InitializeComponent(); + this.BindSettings(); + CB_Minimized.Checked = Settings.LaunchMinimazed; + CB_AutostartGDPIControl.Checked = ControlTask.IsRegistered; + + CB_AutostartGDPI.Checked = Settings.AutostartGDPI; + CB_StopDriver.Checked = Settings.StopDriver; + } + + private void B_Cancel_Click(object sender, EventArgs e) + { + Close(); + } + + private void B_OK_Click(object sender, EventArgs e) + { + Settings.LaunchMinimazed = CB_Minimized.Checked; + Settings.AutostartGDPI = CB_AutostartGDPI.Checked; + Settings.StopDriver = CB_StopDriver.Checked; + + try + { + if (CB_AutostartGDPIControl.Checked && !ControlTask.IsRegistered) + { + ControlTask.Register(); + } + else if (!CB_AutostartGDPIControl.Checked && ControlTask.IsRegistered) + { + ControlTask.Delete(); + } + } + catch (Exception ex) + { + this.ShowError(ex); + } + Close(); + } + } +} \ No newline at end of file diff --git a/GDPIControl/Forms/FormSettings.resx b/GDPIControl/Forms/FormSettings.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/GDPIControl/Forms/FormSettings.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/GDPIControl/GDPIControl.csproj b/GDPIControl/GDPIControl.csproj index b65f229..a14394d 100644 --- a/GDPIControl/GDPIControl.csproj +++ b/GDPIControl/GDPIControl.csproj @@ -23,6 +23,7 @@ + diff --git a/GDPIControl/GDPIProcess.cs b/GDPIControl/GDPIProcess.cs index 05c5a7e..87cb54f 100644 --- a/GDPIControl/GDPIProcess.cs +++ b/GDPIControl/GDPIProcess.cs @@ -1,4 +1,6 @@ using System.Diagnostics; +using System.Linq; +using System.ServiceProcess; using System.Threading.Tasks; namespace GDPIControl @@ -44,6 +46,13 @@ public static void Stop() GDPIP = null; } + public static void StopDriver() + { + var devices = ServiceController.GetDevices(); + var driver = devices.FirstOrDefault(S => S.ServiceName.Contains("WinDivert")); + driver?.Stop(); + } + private static void GDPIP_ErrorDataReceived(object sender, DataReceivedEventArgs e) { Debug.WriteLine(e.Data); diff --git a/GDPIControl/Model/ControlSettings.cs b/GDPIControl/Model/ControlSettings.cs index 01edfd3..b7a7593 100644 --- a/GDPIControl/Model/ControlSettings.cs +++ b/GDPIControl/Model/ControlSettings.cs @@ -3,13 +3,14 @@ public class ControlSettings { public string Arguments { get; set; } - public GDPISettings GDPISettings { get; set; } + public bool AutostartGDPI { get; set; } public GDPISettings CustomSettings1 { get; set; } public GDPISettings CustomSettings2 { get; set; } public GDPISettings CustomSettings3 { get; set; } - public Modeset Modeset { get; set; } + public GDPISettings GDPISettings { get; set; } public bool LaunchMinimazed { get; set; } - public bool AutostartGDPI { get; set; } + public Modeset Modeset { get; set; } + public bool StopDriver { get; set; } public bool UseBlacklist { get; set; } public bool UseUserlist { get; set; } } diff --git a/GDPIControl/Properties/Settings.Designer.cs b/GDPIControl/Properties/Settings.Designer.cs index fcfb933..52db9f3 100644 --- a/GDPIControl/Properties/Settings.Designer.cs +++ b/GDPIControl/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace GDPIControl.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.6.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.10.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); @@ -49,7 +49,7 @@ public static Settings Default { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Segoe UI, 8.25pt")] + [global::System.Configuration.DefaultSettingValueAttribute("Segoe UI, 9pt")] public global::System.Drawing.Font Font { get { return ((global::System.Drawing.Font)(this["Font"])); diff --git a/GDPIControl/Properties/Settings.settings b/GDPIControl/Properties/Settings.settings index 3682294..625a9f6 100644 --- a/GDPIControl/Properties/Settings.settings +++ b/GDPIControl/Properties/Settings.settings @@ -9,7 +9,7 @@ Black - Segoe UI, 8.25pt + Segoe UI, 9pt \ No newline at end of file diff --git a/GDPIControl/icons8.Designer.cs b/GDPIControl/icons8.Designer.cs index 2ec0785..67ce491 100644 --- a/GDPIControl/icons8.Designer.cs +++ b/GDPIControl/icons8.Designer.cs @@ -83,9 +83,9 @@ internal static System.Drawing.Bitmap CopyToClipboard16 { /// /// Поиск локализованного ресурса типа System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap info16 { + internal static System.Drawing.Bitmap Info16 { get { - object obj = ResourceManager.GetObject("info16", resourceCulture); + object obj = ResourceManager.GetObject("Info16", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -113,9 +113,9 @@ internal static System.Drawing.Bitmap Replace16 { /// /// Поиск локализованного ресурса типа System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap settings16 { + internal static System.Drawing.Bitmap Settings16 { get { - object obj = ResourceManager.GetObject("settings16", resourceCulture); + object obj = ResourceManager.GetObject("Settings16", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -123,9 +123,9 @@ internal static System.Drawing.Bitmap settings16 { /// /// Поиск локализованного ресурса типа System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap shutdown16 { + internal static System.Drawing.Bitmap Shutdown16 { get { - object obj = ResourceManager.GetObject("shutdown16", resourceCulture); + object obj = ResourceManager.GetObject("Shutdown16", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } diff --git a/GDPIControl/icons8.resx b/GDPIControl/icons8.resx index 7b8140e..f506ee8 100644 --- a/GDPIControl/icons8.resx +++ b/GDPIControl/icons8.resx @@ -124,8 +124,8 @@ Resources\Icons8\CopyToClipboard16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - resources\icons8\info16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + Resources\Icons8\Info16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a Resources\Icons8\Ok16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -133,10 +133,10 @@ Resources\Icons8\Replace16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - resources\icons8\settings16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + Resources\Icons8\Settings16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - resources\icons8\shutdown16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + Resources\Icons8\Shutdown16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/GDPIControl/packages.lock.json b/GDPIControl/packages.lock.json index 8ba08d5..656bf21 100644 --- a/GDPIControl/packages.lock.json +++ b/GDPIControl/packages.lock.json @@ -17,6 +17,15 @@ "System.Memory": "4.5.5" } }, + "System.ServiceProcess.ServiceController": { + "type": "Direct", + "requested": "[8.0.0, )", + "resolved": "8.0.0", + "contentHash": "jtYVG3bpw2n/NvNnP2g/JLri0D4UtfusTvLeH6cZPNAEjJXJVGspS3wLgVvjNbm+wjaYkFgsXejMTocV1T5DIQ==", + "dependencies": { + "System.Diagnostics.EventLog": "8.0.0" + } + }, "TaskScheduler": { "type": "Direct", "requested": "[2.11.0, )", @@ -28,6 +37,14 @@ "resolved": "4.5.1", "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" }, + "System.Diagnostics.EventLog": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "fdYxcRjQqTTacKId/2IECojlDSFvp7LP5N78+0z/xH7v/Tuw5ZAxu23Y6PTCRinqyu2ePx+Gn1098NC6jM6d+A==", + "dependencies": { + "System.Security.Principal.Windows": "5.0.0" + } + }, "System.Memory": { "type": "Transitive", "resolved": "4.5.5", @@ -47,29 +64,50 @@ "type": "Transitive", "resolved": "4.5.3", "contentHash": "3TIsJhD1EiiT0w2CcDMN/iSSwnNnsrnbzeVHSKkaEgV85txMprmuO+Yq2AdSbeVGcg28pdNDTPK87tJhX7VFHw==" + }, + "System.Security.Principal.Windows": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==" + } + }, + ".NETFramework,Version=v4.7.2/win-x64": { + "System.Security.Principal.Windows": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==" + } + }, + ".NETFramework,Version=v4.7.2/win-x86": { + "System.Security.Principal.Windows": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==" + } + }, + ".NETFramework,Version=v4.7.2/win7-x86": { + "System.Security.Principal.Windows": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==" } }, - ".NETFramework,Version=v4.7.2/win-x64": {}, - ".NETFramework,Version=v4.7.2/win-x86": {}, "net6.0-windows7.0": { - "Microsoft.NET.ILLink.Analyzers": { - "type": "Direct", - "requested": "[7.0.100-1.23401.1, )", - "resolved": "7.0.100-1.23401.1", - "contentHash": "XirkjOLc5Vc3HsXRc2Z6ZbQv6l0RvWgJa/31w7XqZ914MoSi3H3OCNRMWFw7H2EYfsnKbokFfhCcysAmUcEOgw==" - }, - "Microsoft.NET.ILLink.Tasks": { - "type": "Direct", - "requested": "[7.0.100-1.23401.1, )", - "resolved": "7.0.100-1.23401.1", - "contentHash": "mI6vCdPEhluLtMn/GV0texEWg5oAPQWCCE4LWspM+Bmy75Nd4EQsziQXrdOFqNeSBQMrxDX9C/O5Xi3kpKSMIw==" - }, "System.Resources.Extensions": { "type": "Direct", "requested": "[8.0.0, )", "resolved": "8.0.0", "contentHash": "psnQ6GRQOvt+evda5C4nD5EuV49mz2Tv0DD2JDVDEbE/TKoMukxSkGJcsBJ0pajpPuFRr67syFYlkJ4Wj6A5Zw==" }, + "System.ServiceProcess.ServiceController": { + "type": "Direct", + "requested": "[8.0.0, )", + "resolved": "8.0.0", + "contentHash": "jtYVG3bpw2n/NvNnP2g/JLri0D4UtfusTvLeH6cZPNAEjJXJVGspS3wLgVvjNbm+wjaYkFgsXejMTocV1T5DIQ==", + "dependencies": { + "System.Diagnostics.EventLog": "8.0.0" + } + }, "TaskScheduler": { "type": "Direct", "requested": "[2.11.0, )", @@ -107,6 +145,15 @@ } }, "net6.0-windows7.0/win-x64": { + "System.ServiceProcess.ServiceController": { + "type": "Direct", + "requested": "[8.0.0, )", + "resolved": "8.0.0", + "contentHash": "jtYVG3bpw2n/NvNnP2g/JLri0D4UtfusTvLeH6cZPNAEjJXJVGspS3wLgVvjNbm+wjaYkFgsXejMTocV1T5DIQ==", + "dependencies": { + "System.Diagnostics.EventLog": "8.0.0" + } + }, "Microsoft.Win32.Registry": { "type": "Transitive", "resolved": "5.0.0", @@ -133,6 +180,50 @@ } }, "net6.0-windows7.0/win-x86": { + "System.ServiceProcess.ServiceController": { + "type": "Direct", + "requested": "[8.0.0, )", + "resolved": "8.0.0", + "contentHash": "jtYVG3bpw2n/NvNnP2g/JLri0D4UtfusTvLeH6cZPNAEjJXJVGspS3wLgVvjNbm+wjaYkFgsXejMTocV1T5DIQ==", + "dependencies": { + "System.Diagnostics.EventLog": "8.0.0" + } + }, + "Microsoft.Win32.Registry": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==", + "dependencies": { + "System.Security.AccessControl": "5.0.0", + "System.Security.Principal.Windows": "5.0.0" + } + }, + "System.Diagnostics.EventLog": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "fdYxcRjQqTTacKId/2IECojlDSFvp7LP5N78+0z/xH7v/Tuw5ZAxu23Y6PTCRinqyu2ePx+Gn1098NC6jM6d+A==" + }, + "System.Security.AccessControl": { + "type": "Transitive", + "resolved": "6.0.1", + "contentHash": "IQ4NXP/B3Ayzvw0rDQzVTYsCKyy0Jp9KI6aYcK7UnGVlR9+Awz++TIPCQtPYfLJfOpm8ajowMR09V7quD3sEHw==" + }, + "System.Security.Principal.Windows": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==" + } + }, + "net6.0-windows7.0/win7-x86": { + "System.ServiceProcess.ServiceController": { + "type": "Direct", + "requested": "[8.0.0, )", + "resolved": "8.0.0", + "contentHash": "jtYVG3bpw2n/NvNnP2g/JLri0D4UtfusTvLeH6cZPNAEjJXJVGspS3wLgVvjNbm+wjaYkFgsXejMTocV1T5DIQ==", + "dependencies": { + "System.Diagnostics.EventLog": "8.0.0" + } + }, "Microsoft.Win32.Registry": { "type": "Transitive", "resolved": "5.0.0",