mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5334d1e4ed | ||
|
|
9f339806d4 | ||
|
|
54a4668e2a | ||
|
|
71d2a6ce05 | ||
|
|
92d1b97b95 | ||
|
|
4b9a53cef8 | ||
|
|
068694d7d1 | ||
|
|
43c6def162 | ||
|
|
306697f026 | ||
|
|
c5a32cc9d5 | ||
|
|
51acd9a612 | ||
|
|
457a37049c |
@@ -1,4 +1,5 @@
|
||||
using System.Diagnostics;
|
||||
using GHelper;
|
||||
using System.Diagnostics;
|
||||
using System.Management;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
|
||||
@@ -3,4 +3,8 @@
|
||||
<System.Windows.Forms.ApplicationConfigurationSection>
|
||||
<add key="DpiAwareness" value="PerMonitorV2" />
|
||||
</System.Windows.Forms.ApplicationConfigurationSection>
|
||||
</configuration>
|
||||
</configuration>
|
||||
|
||||
<appSettings>
|
||||
<add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
|
||||
</appSettings>
|
||||
@@ -1,6 +1,7 @@
|
||||
// Source thanks to https://github.com/vddCore/Starlight :)
|
||||
|
||||
using Starlight.Communication.Platform;
|
||||
using System.Configuration;
|
||||
|
||||
namespace Starlight.Communication
|
||||
{
|
||||
@@ -8,9 +9,21 @@ namespace Starlight.Communication
|
||||
{
|
||||
private static UsbProvider _usbProvider;
|
||||
|
||||
private static ushort _vendorId;
|
||||
private static ushort _productId;
|
||||
private static int _maxFeatureReportLength;
|
||||
|
||||
protected Device(ushort vendorId, ushort productId, int maxFeatureReportLength)
|
||||
{
|
||||
_usbProvider = new WindowsUsbProvider(vendorId, productId, maxFeatureReportLength);
|
||||
_vendorId = vendorId;
|
||||
_productId = productId;
|
||||
_maxFeatureReportLength = maxFeatureReportLength;
|
||||
SetProvider();
|
||||
}
|
||||
|
||||
public void SetProvider()
|
||||
{
|
||||
_usbProvider = new WindowsUsbProvider(_vendorId, _productId, _maxFeatureReportLength);
|
||||
}
|
||||
|
||||
protected T Packet<T>(params byte[] command) where T : Packet
|
||||
|
||||
183
Fans.Designer.cs
generated
183
Fans.Designer.cs
generated
@@ -28,14 +28,17 @@
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea5 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
|
||||
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea6 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
|
||||
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea3 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
|
||||
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea4 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
|
||||
panelFans = new Panel();
|
||||
checkAuto = new CheckBox();
|
||||
tableFanCharts = new TableLayoutPanel();
|
||||
chartGPU = new System.Windows.Forms.DataVisualization.Charting.Chart();
|
||||
chartCPU = new System.Windows.Forms.DataVisualization.Charting.Chart();
|
||||
checkBoost = new CheckBox();
|
||||
labelFans = new Label();
|
||||
checkAuto = new CheckBox();
|
||||
buttonReset = new Button();
|
||||
buttonApply = new Button();
|
||||
chartCPU = new System.Windows.Forms.DataVisualization.Charting.Chart();
|
||||
panelPower = new Panel();
|
||||
labelPowerLimits = new Label();
|
||||
checkApplyPower = new CheckBox();
|
||||
@@ -52,6 +55,7 @@
|
||||
pictureFine = new PictureBox();
|
||||
labelInfo = new Label();
|
||||
panelFans.SuspendLayout();
|
||||
tableFanCharts.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)chartGPU).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)chartCPU).BeginInit();
|
||||
panelPower.SuspendLayout();
|
||||
@@ -64,25 +68,91 @@
|
||||
//
|
||||
// panelFans
|
||||
//
|
||||
panelFans.Controls.Add(tableFanCharts);
|
||||
panelFans.Controls.Add(checkBoost);
|
||||
panelFans.Controls.Add(labelFans);
|
||||
panelFans.Controls.Add(checkAuto);
|
||||
panelFans.Controls.Add(chartGPU);
|
||||
panelFans.Controls.Add(buttonReset);
|
||||
panelFans.Controls.Add(buttonApply);
|
||||
panelFans.Controls.Add(chartCPU);
|
||||
panelFans.Dock = DockStyle.Left;
|
||||
panelFans.Location = new Point(363, 0);
|
||||
panelFans.Margin = new Padding(10);
|
||||
panelFans.MinimumSize = new Size(868, 1089);
|
||||
panelFans.Location = new Point(364, 0);
|
||||
panelFans.Margin = new Padding(0);
|
||||
panelFans.MinimumSize = new Size(824, 1098);
|
||||
panelFans.Name = "panelFans";
|
||||
panelFans.Padding = new Padding(10);
|
||||
panelFans.Size = new Size(872, 1089);
|
||||
panelFans.Padding = new Padding(20);
|
||||
panelFans.Size = new Size(824, 1159);
|
||||
panelFans.TabIndex = 12;
|
||||
//
|
||||
// tableFanCharts
|
||||
//
|
||||
tableFanCharts.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
|
||||
tableFanCharts.ColumnCount = 1;
|
||||
tableFanCharts.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
|
||||
tableFanCharts.Controls.Add(chartGPU, 0, 1);
|
||||
tableFanCharts.Controls.Add(chartCPU, 0, 0);
|
||||
tableFanCharts.Location = new Point(28, 68);
|
||||
tableFanCharts.Margin = new Padding(6);
|
||||
tableFanCharts.Name = "tableFanCharts";
|
||||
tableFanCharts.RowCount = 2;
|
||||
tableFanCharts.RowStyles.Add(new RowStyle(SizeType.Percent, 50F));
|
||||
tableFanCharts.RowStyles.Add(new RowStyle(SizeType.Percent, 50F));
|
||||
tableFanCharts.RowStyles.Add(new RowStyle(SizeType.Absolute, 40F));
|
||||
tableFanCharts.RowStyles.Add(new RowStyle(SizeType.Absolute, 40F));
|
||||
tableFanCharts.Size = new Size(764, 988);
|
||||
tableFanCharts.TabIndex = 36;
|
||||
//
|
||||
// chartGPU
|
||||
//
|
||||
chartArea3.Name = "ChartArea1";
|
||||
chartGPU.ChartAreas.Add(chartArea3);
|
||||
chartGPU.Dock = DockStyle.Fill;
|
||||
chartGPU.Location = new Point(2, 504);
|
||||
chartGPU.Margin = new Padding(2, 10, 2, 10);
|
||||
chartGPU.Name = "chartGPU";
|
||||
chartGPU.Size = new Size(760, 474);
|
||||
chartGPU.TabIndex = 17;
|
||||
chartGPU.Text = "chart1";
|
||||
//
|
||||
// chartCPU
|
||||
//
|
||||
chartArea4.Name = "ChartArea1";
|
||||
chartCPU.ChartAreas.Add(chartArea4);
|
||||
chartCPU.Dock = DockStyle.Fill;
|
||||
chartCPU.Location = new Point(2, 10);
|
||||
chartCPU.Margin = new Padding(2, 10, 2, 10);
|
||||
chartCPU.Name = "chartCPU";
|
||||
chartCPU.Size = new Size(760, 474);
|
||||
chartCPU.TabIndex = 14;
|
||||
chartCPU.Text = "chartCPU";
|
||||
//
|
||||
// checkBoost
|
||||
//
|
||||
checkBoost.AutoSize = true;
|
||||
checkBoost.ForeColor = SystemColors.ControlText;
|
||||
checkBoost.Location = new Point(475, 18);
|
||||
checkBoost.Margin = new Padding(4, 2, 4, 2);
|
||||
checkBoost.Name = "checkBoost";
|
||||
checkBoost.Size = new Size(320, 36);
|
||||
checkBoost.TabIndex = 35;
|
||||
checkBoost.Text = "CPU Turbo Boost enabled";
|
||||
checkBoost.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// labelFans
|
||||
//
|
||||
labelFans.AutoSize = true;
|
||||
labelFans.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
labelFans.Location = new Point(28, 20);
|
||||
labelFans.Margin = new Padding(4, 0, 4, 0);
|
||||
labelFans.Name = "labelFans";
|
||||
labelFans.Size = new Size(138, 32);
|
||||
labelFans.TabIndex = 28;
|
||||
labelFans.Text = "Fan Curves";
|
||||
//
|
||||
// checkAuto
|
||||
//
|
||||
checkAuto.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
||||
checkAuto.AutoSize = true;
|
||||
checkAuto.Location = new Point(584, 981);
|
||||
checkAuto.Location = new Point(377, 1086);
|
||||
checkAuto.Margin = new Padding(4, 2, 4, 2);
|
||||
checkAuto.Name = "checkAuto";
|
||||
checkAuto.Size = new Size(165, 36);
|
||||
@@ -90,25 +160,13 @@
|
||||
checkAuto.Text = "Auto Apply";
|
||||
checkAuto.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// chartGPU
|
||||
//
|
||||
chartGPU.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
chartArea5.Name = "ChartArea1";
|
||||
chartGPU.ChartAreas.Add(chartArea5);
|
||||
chartGPU.Location = new Point(22, 502);
|
||||
chartGPU.Margin = new Padding(4, 2, 4, 2);
|
||||
chartGPU.Name = "chartGPU";
|
||||
chartGPU.Size = new Size(810, 460);
|
||||
chartGPU.TabIndex = 16;
|
||||
chartGPU.Text = "chart1";
|
||||
//
|
||||
// buttonReset
|
||||
//
|
||||
buttonReset.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
|
||||
buttonReset.Location = new Point(22, 1025);
|
||||
buttonReset.Location = new Point(30, 1081);
|
||||
buttonReset.Margin = new Padding(4, 2, 4, 2);
|
||||
buttonReset.Name = "buttonReset";
|
||||
buttonReset.Size = new Size(231, 44);
|
||||
buttonReset.Size = new Size(232, 44);
|
||||
buttonReset.TabIndex = 15;
|
||||
buttonReset.Text = "Factory Defaults";
|
||||
buttonReset.UseVisualStyleBackColor = true;
|
||||
@@ -116,7 +174,7 @@
|
||||
// buttonApply
|
||||
//
|
||||
buttonApply.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
||||
buttonApply.Location = new Point(584, 1025);
|
||||
buttonApply.Location = new Point(542, 1081);
|
||||
buttonApply.Margin = new Padding(4, 2, 4, 2);
|
||||
buttonApply.Name = "buttonApply";
|
||||
buttonApply.Size = new Size(248, 44);
|
||||
@@ -124,18 +182,6 @@
|
||||
buttonApply.Text = "Apply Fan Curve";
|
||||
buttonApply.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// chartCPU
|
||||
//
|
||||
chartCPU.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
chartArea6.Name = "ChartArea1";
|
||||
chartCPU.ChartAreas.Add(chartArea6);
|
||||
chartCPU.Location = new Point(22, 21);
|
||||
chartCPU.Margin = new Padding(10);
|
||||
chartCPU.Name = "chartCPU";
|
||||
chartCPU.Size = new Size(810, 460);
|
||||
chartCPU.TabIndex = 13;
|
||||
chartCPU.Text = "chartCPU";
|
||||
//
|
||||
// panelPower
|
||||
//
|
||||
panelPower.Controls.Add(labelPowerLimits);
|
||||
@@ -148,15 +194,18 @@
|
||||
panelPower.Controls.Add(labelInfo);
|
||||
panelPower.Dock = DockStyle.Left;
|
||||
panelPower.Location = new Point(0, 0);
|
||||
panelPower.Margin = new Padding(10);
|
||||
panelPower.Name = "panelPower";
|
||||
panelPower.Size = new Size(363, 1089);
|
||||
panelPower.Padding = new Padding(10);
|
||||
panelPower.Size = new Size(364, 1159);
|
||||
panelPower.TabIndex = 13;
|
||||
//
|
||||
// labelPowerLimits
|
||||
//
|
||||
labelPowerLimits.AutoSize = true;
|
||||
labelPowerLimits.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
labelPowerLimits.Location = new Point(23, 15);
|
||||
labelPowerLimits.Location = new Point(24, 20);
|
||||
labelPowerLimits.Margin = new Padding(4, 0, 4, 0);
|
||||
labelPowerLimits.Name = "labelPowerLimits";
|
||||
labelPowerLimits.Size = new Size(229, 32);
|
||||
labelPowerLimits.TabIndex = 26;
|
||||
@@ -164,9 +213,9 @@
|
||||
//
|
||||
// checkApplyPower
|
||||
//
|
||||
checkApplyPower.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
||||
checkApplyPower.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
|
||||
checkApplyPower.AutoSize = true;
|
||||
checkApplyPower.Location = new Point(17, 981);
|
||||
checkApplyPower.Location = new Point(27, 1039);
|
||||
checkApplyPower.Margin = new Padding(4, 2, 4, 2);
|
||||
checkApplyPower.Name = "checkApplyPower";
|
||||
checkApplyPower.Size = new Size(165, 36);
|
||||
@@ -177,10 +226,10 @@
|
||||
// buttonApplyPower
|
||||
//
|
||||
buttonApplyPower.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
|
||||
buttonApplyPower.Location = new Point(17, 1025);
|
||||
buttonApplyPower.Location = new Point(20, 1081);
|
||||
buttonApplyPower.Margin = new Padding(4, 2, 4, 2);
|
||||
buttonApplyPower.Name = "buttonApplyPower";
|
||||
buttonApplyPower.Size = new Size(321, 44);
|
||||
buttonApplyPower.Size = new Size(324, 44);
|
||||
buttonApplyPower.TabIndex = 24;
|
||||
buttonApplyPower.Text = "Apply Power Limits";
|
||||
buttonApplyPower.UseVisualStyleBackColor = true;
|
||||
@@ -190,7 +239,8 @@
|
||||
panelCPU.Controls.Add(labelCPU);
|
||||
panelCPU.Controls.Add(label2);
|
||||
panelCPU.Controls.Add(trackCPU);
|
||||
panelCPU.Location = new Point(184, 89);
|
||||
panelCPU.Location = new Point(184, 90);
|
||||
panelCPU.Margin = new Padding(4);
|
||||
panelCPU.Name = "panelCPU";
|
||||
panelCPU.Size = new Size(160, 510);
|
||||
panelCPU.TabIndex = 23;
|
||||
@@ -199,7 +249,7 @@
|
||||
//
|
||||
labelCPU.AutoSize = true;
|
||||
labelCPU.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
labelCPU.Location = new Point(43, 41);
|
||||
labelCPU.Location = new Point(44, 40);
|
||||
labelCPU.Margin = new Padding(4, 0, 4, 0);
|
||||
labelCPU.Name = "labelCPU";
|
||||
labelCPU.Size = new Size(61, 32);
|
||||
@@ -210,7 +260,7 @@
|
||||
// label2
|
||||
//
|
||||
label2.AutoSize = true;
|
||||
label2.Location = new Point(45, 7);
|
||||
label2.Location = new Point(44, 8);
|
||||
label2.Margin = new Padding(4, 0, 4, 0);
|
||||
label2.Name = "label2";
|
||||
label2.Size = new Size(58, 32);
|
||||
@@ -220,7 +270,7 @@
|
||||
//
|
||||
// trackCPU
|
||||
//
|
||||
trackCPU.Location = new Point(47, 89);
|
||||
trackCPU.Location = new Point(48, 88);
|
||||
trackCPU.Margin = new Padding(4, 2, 4, 2);
|
||||
trackCPU.Maximum = 85;
|
||||
trackCPU.Minimum = 15;
|
||||
@@ -236,16 +286,17 @@
|
||||
panelTotal.Controls.Add(labelTotal);
|
||||
panelTotal.Controls.Add(label1);
|
||||
panelTotal.Controls.Add(trackTotal);
|
||||
panelTotal.Location = new Point(17, 89);
|
||||
panelTotal.Location = new Point(16, 90);
|
||||
panelTotal.Margin = new Padding(4);
|
||||
panelTotal.Name = "panelTotal";
|
||||
panelTotal.Size = new Size(160, 511);
|
||||
panelTotal.Size = new Size(160, 512);
|
||||
panelTotal.TabIndex = 22;
|
||||
//
|
||||
// labelTotal
|
||||
//
|
||||
labelTotal.AutoSize = true;
|
||||
labelTotal.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
labelTotal.Location = new Point(46, 41);
|
||||
labelTotal.Location = new Point(46, 40);
|
||||
labelTotal.Margin = new Padding(4, 0, 4, 0);
|
||||
labelTotal.Name = "labelTotal";
|
||||
labelTotal.Size = new Size(70, 32);
|
||||
@@ -256,7 +307,7 @@
|
||||
// label1
|
||||
//
|
||||
label1.AutoSize = true;
|
||||
label1.Location = new Point(48, 7);
|
||||
label1.Location = new Point(48, 8);
|
||||
label1.Margin = new Padding(4, 0, 4, 0);
|
||||
label1.Name = "label1";
|
||||
label1.Size = new Size(65, 32);
|
||||
@@ -266,7 +317,7 @@
|
||||
//
|
||||
// trackTotal
|
||||
//
|
||||
trackTotal.Location = new Point(44, 89);
|
||||
trackTotal.Location = new Point(44, 88);
|
||||
trackTotal.Margin = new Padding(4, 2, 4, 2);
|
||||
trackTotal.Maximum = 150;
|
||||
trackTotal.Minimum = 15;
|
||||
@@ -282,7 +333,7 @@
|
||||
//
|
||||
labelApplied.AutoSize = true;
|
||||
labelApplied.ForeColor = Color.Tomato;
|
||||
labelApplied.Location = new Point(23, 51);
|
||||
labelApplied.Location = new Point(24, 54);
|
||||
labelApplied.Margin = new Padding(4, 0, 4, 0);
|
||||
labelApplied.Name = "labelApplied";
|
||||
labelApplied.Size = new Size(143, 32);
|
||||
@@ -291,13 +342,13 @@
|
||||
//
|
||||
// pictureFine
|
||||
//
|
||||
pictureFine.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
|
||||
pictureFine.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
pictureFine.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
pictureFine.Image = Properties.Resources.everything_is_fine_itsfine;
|
||||
pictureFine.Location = new Point(17, 694);
|
||||
pictureFine.Location = new Point(20, 682);
|
||||
pictureFine.Margin = new Padding(4, 2, 4, 2);
|
||||
pictureFine.Name = "pictureFine";
|
||||
pictureFine.Size = new Size(327, 254);
|
||||
pictureFine.Size = new Size(324, 268);
|
||||
pictureFine.SizeMode = PictureBoxSizeMode.Zoom;
|
||||
pictureFine.TabIndex = 20;
|
||||
pictureFine.TabStop = false;
|
||||
@@ -305,10 +356,10 @@
|
||||
//
|
||||
// labelInfo
|
||||
//
|
||||
labelInfo.Location = new Point(17, 603);
|
||||
labelInfo.Location = new Point(24, 618);
|
||||
labelInfo.Margin = new Padding(4, 0, 4, 0);
|
||||
labelInfo.Name = "labelInfo";
|
||||
labelInfo.Size = new Size(327, 371);
|
||||
labelInfo.Size = new Size(320, 330);
|
||||
labelInfo.TabIndex = 19;
|
||||
labelInfo.Text = "label";
|
||||
//
|
||||
@@ -318,14 +369,14 @@
|
||||
AutoScaleMode = AutoScaleMode.Dpi;
|
||||
AutoSize = true;
|
||||
AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
ClientSize = new Size(1220, 1089);
|
||||
ClientSize = new Size(1188, 1159);
|
||||
Controls.Add(panelFans);
|
||||
Controls.Add(panelPower);
|
||||
Margin = new Padding(4, 2, 4, 2);
|
||||
MaximizeBox = false;
|
||||
MdiChildrenMinimizedAnchorBottom = false;
|
||||
MinimizeBox = false;
|
||||
MinimumSize = new Size(0, 1160);
|
||||
MinimumSize = new Size(26, 1230);
|
||||
Name = "Fans";
|
||||
ShowIcon = false;
|
||||
ShowInTaskbar = false;
|
||||
@@ -333,6 +384,7 @@
|
||||
Text = "Fans and Power";
|
||||
panelFans.ResumeLayout(false);
|
||||
panelFans.PerformLayout();
|
||||
tableFanCharts.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)chartGPU).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)chartCPU).EndInit();
|
||||
panelPower.ResumeLayout(false);
|
||||
@@ -350,10 +402,8 @@
|
||||
#endregion
|
||||
private Panel panelFans;
|
||||
private CheckBox checkAuto;
|
||||
private System.Windows.Forms.DataVisualization.Charting.Chart chartGPU;
|
||||
private Button buttonReset;
|
||||
private Button buttonApply;
|
||||
private System.Windows.Forms.DataVisualization.Charting.Chart chartCPU;
|
||||
private Panel panelPower;
|
||||
private CheckBox checkApplyPower;
|
||||
private Button buttonApplyPower;
|
||||
@@ -369,5 +419,10 @@
|
||||
private PictureBox pictureFine;
|
||||
private Label labelInfo;
|
||||
private Label labelPowerLimits;
|
||||
private TableLayoutPanel tableFanCharts;
|
||||
private System.Windows.Forms.DataVisualization.Charting.Chart chartGPU;
|
||||
private System.Windows.Forms.DataVisualization.Charting.Chart chartCPU;
|
||||
private CheckBox checkBoost;
|
||||
private Label labelFans;
|
||||
}
|
||||
}
|
||||
37
Fans.cs
37
Fans.cs
@@ -22,7 +22,7 @@ namespace GHelper
|
||||
title = "CPU Fan Profile";
|
||||
|
||||
if (Program.settingsForm.perfName.Length > 0)
|
||||
title += ": " + Program.settingsForm.perfName;
|
||||
labelFans.Text = "Fan Profiles: " + Program.settingsForm.perfName;
|
||||
|
||||
if (chart.Titles.Count > 0)
|
||||
chart.Titles[0].Text = title;
|
||||
@@ -57,7 +57,18 @@ namespace GHelper
|
||||
|
||||
private void Fans_Shown(object? sender, EventArgs e)
|
||||
{
|
||||
Top = Program.settingsForm.Top;
|
||||
if (Height > Program.settingsForm.Height)
|
||||
{
|
||||
Top = Program.settingsForm.Top + Program.settingsForm.Height - Height;
|
||||
}
|
||||
else
|
||||
{
|
||||
MinimumSize = new Size(0, Program.settingsForm.Height);
|
||||
Height = Program.settingsForm.Height;
|
||||
Top = Program.settingsForm.Top;
|
||||
}
|
||||
|
||||
|
||||
Left = Program.settingsForm.Left - Width - 5;
|
||||
}
|
||||
|
||||
@@ -102,11 +113,33 @@ namespace GHelper
|
||||
|
||||
InitFans();
|
||||
InitPower();
|
||||
InitBoost();
|
||||
|
||||
checkBoost.Click += CheckBoost_Click;
|
||||
|
||||
Shown += Fans_Shown;
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void InitBoost()
|
||||
{
|
||||
int boost = NativeMethods.GetCPUBoost();
|
||||
checkBoost.Checked = (boost > 0);
|
||||
}
|
||||
|
||||
private void CheckBoost_Click(object? sender, EventArgs e)
|
||||
{
|
||||
if (sender is null)
|
||||
return;
|
||||
|
||||
CheckBox chk = (CheckBox)sender;
|
||||
if (chk.Checked)
|
||||
NativeMethods.SetCPUBoost(2);
|
||||
else
|
||||
NativeMethods.SetCPUBoost(0);
|
||||
}
|
||||
|
||||
private void CheckApplyPower_Click(object? sender, EventArgs e)
|
||||
{
|
||||
if (sender is null) return;
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
<AssemblyName>GHelper</AssemblyName>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
||||
<AssemblyVersion>0.18.1</AssemblyVersion>
|
||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||
<AssemblyVersion>0.23</AssemblyVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -310,6 +310,7 @@ namespace Tools
|
||||
public class NativeMethods
|
||||
{
|
||||
|
||||
|
||||
public const int KEYEVENTF_EXTENDEDKEY = 1;
|
||||
public const int KEYEVENTF_KEYUP = 2;
|
||||
|
||||
|
||||
99
Program.cs
99
Program.cs
@@ -1,6 +1,10 @@
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Management;
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text.Json;
|
||||
|
||||
public class HardwareMonitor
|
||||
{
|
||||
@@ -36,6 +40,32 @@ namespace GHelper
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
|
||||
// Native methods for sleep detection
|
||||
|
||||
[DllImport("Powrprof.dll", SetLastError = true)]
|
||||
static extern uint PowerRegisterSuspendResumeNotification(uint flags, ref DEVICE_NOTIFY_SUBSCRIBE_PARAMETERS receipient, ref IntPtr registrationHandle);
|
||||
|
||||
|
||||
private const int WM_POWERBROADCAST = 536; // (0x218)
|
||||
private const int PBT_APMPOWERSTATUSCHANGE = 10; // (0xA) - Power status has changed.
|
||||
private const int PBT_APMRESUMEAUTOMATIC = 18; // (0x12) - Operation is resuming automatically from a low-power state.This message is sent every time the system resumes.
|
||||
private const int PBT_APMRESUMESUSPEND = 7; // (0x7) - Operation is resuming from a low-power state.This message is sent after PBT_APMRESUMEAUTOMATIC if the resume is triggered by user input, such as pressing a key.
|
||||
private const int PBT_APMSUSPEND = 4; // (0x4) - System is suspending operation.
|
||||
private const int PBT_POWERSETTINGCHANGE = 32787; // (0x8013) - A power setting change event has been received.
|
||||
private const int DEVICE_NOTIFY_CALLBACK = 2;
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
struct DEVICE_NOTIFY_SUBSCRIBE_PARAMETERS
|
||||
{
|
||||
public DeviceNotifyCallbackRoutine Callback;
|
||||
public IntPtr Context;
|
||||
}
|
||||
|
||||
public delegate int DeviceNotifyCallbackRoutine(IntPtr context, int type, IntPtr setting);
|
||||
|
||||
//
|
||||
|
||||
public static NotifyIcon trayIcon = new NotifyIcon
|
||||
{
|
||||
Text = "G-Helper",
|
||||
@@ -69,13 +99,13 @@ namespace GHelper
|
||||
|
||||
}
|
||||
|
||||
Application.EnableVisualStyles();
|
||||
|
||||
trayIcon.MouseClick += TrayIcon_MouseClick; ;
|
||||
|
||||
wmi.SubscribeToEvents(WatcherEventArrived);
|
||||
|
||||
settingsForm.InitGPUMode();
|
||||
settingsForm.InitBoost();
|
||||
settingsForm.InitAura();
|
||||
settingsForm.InitMatrix();
|
||||
|
||||
@@ -85,14 +115,77 @@ namespace GHelper
|
||||
|
||||
SetAutoModes();
|
||||
|
||||
IntPtr registrationHandle = new IntPtr();
|
||||
DEVICE_NOTIFY_SUBSCRIBE_PARAMETERS recipient = new DEVICE_NOTIFY_SUBSCRIBE_PARAMETERS();
|
||||
recipient.Callback = new DeviceNotifyCallbackRoutine(DeviceNotifyCallback);
|
||||
recipient.Context = IntPtr.Zero;
|
||||
|
||||
IntPtr pRecipient = Marshal.AllocHGlobal(Marshal.SizeOf(recipient));
|
||||
Marshal.StructureToPtr(recipient, pRecipient, false);
|
||||
|
||||
uint result = PowerRegisterSuspendResumeNotification(DEVICE_NOTIFY_CALLBACK, ref recipient, ref registrationHandle);
|
||||
|
||||
SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;
|
||||
|
||||
IntPtr ds = settingsForm.Handle;
|
||||
|
||||
CheckForUpdates();
|
||||
|
||||
Application.Run();
|
||||
|
||||
}
|
||||
|
||||
|
||||
private static int DeviceNotifyCallback(IntPtr context, int type, IntPtr setting)
|
||||
{
|
||||
//Debug.WriteLine($"Power callback type: {type}");
|
||||
switch (type)
|
||||
{
|
||||
case PBT_APMRESUMEAUTOMATIC:
|
||||
settingsForm.BeginInvoke(delegate
|
||||
{
|
||||
SetAutoModes();
|
||||
});
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static async void CheckForUpdates()
|
||||
{
|
||||
|
||||
var assembly = Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
||||
settingsForm.SetVersionLabel("Version: " + assembly);
|
||||
|
||||
try
|
||||
{
|
||||
using (var httpClient = new HttpClient())
|
||||
{
|
||||
httpClient.DefaultRequestHeaders.Add("User-Agent", "C# App");
|
||||
var json = await httpClient.GetStringAsync("https://api.github.com/repos/seerge/g-helper/releases/latest");
|
||||
var config = JsonSerializer.Deserialize<JsonElement>(json);
|
||||
var tag = config.GetProperty("tag_name").ToString().Replace("v", "");
|
||||
var url = config.GetProperty("assets")[0].GetProperty("browser_download_url").ToString();
|
||||
|
||||
var gitVersion = new Version(tag);
|
||||
var appVersion = new Version(assembly);
|
||||
|
||||
var result = gitVersion.CompareTo(appVersion);
|
||||
if (result > 0)
|
||||
{
|
||||
settingsForm.SetVersionLabel("Download Update: " + tag, url);
|
||||
}
|
||||
|
||||
}
|
||||
} catch {
|
||||
Debug.WriteLine("Failed to get update");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private static void SetAutoModes()
|
||||
{
|
||||
PowerLineStatus isPlugged = SystemInformation.PowerStatus.PowerLineStatus;
|
||||
@@ -100,10 +193,10 @@ namespace GHelper
|
||||
Debug.WriteLine(isPlugged.ToString());
|
||||
|
||||
settingsForm.SetBatteryChargeLimit(config.getConfig("charge_limit"));
|
||||
settingsForm.AutoPerformance(isPlugged);
|
||||
settingsForm.AutoScreen(isPlugged);
|
||||
|
||||
settingsForm.AutoPerformance(isPlugged);
|
||||
settingsForm.AutoGPUMode(isPlugged);
|
||||
|
||||
settingsForm.SetMatrix(isPlugged);
|
||||
|
||||
}
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
|
||||
A small utility that allows you do almost everyting you could do with Armory Crate but without extra bloat and unnecessary services.
|
||||
|
||||
### [Download latest release](https://github.com/seerge/g-helper/releases)
|
||||
|
||||

|
||||
|
||||
## NEW (and experimental) features
|
||||
|
||||
1. Set Power limits (PPT) for Total (APU + dGPU) and CPU.
|
||||
@@ -27,10 +31,6 @@ To keep autoswitching and hotkeys work app needs to stay in running in tray. It
|
||||
|
||||
I recommend to keep "Asus Optimization Service" running, as it keeps basic laptop hotkeys such as screen or keyboard brightness adjustment working. If you have (or had) MyASUS app installed, that service is most probably still up an running even after MyASUS uninstall. It's part of [Asus System Controll Interface](https://www.asus.com/support/FAQ/1047338/). You can install it, and later disable / remove unnecesarily services by running [this bat file](https://raw.githubusercontent.com/seerge/g-helper/main/stop-asus-sv.bat ) as admin.
|
||||
|
||||
### [Download latest release](https://github.com/seerge/g-helper/releases)
|
||||
|
||||

|
||||
|
||||
## Performance Profile switching
|
||||
|
||||
Profiles are **same** as in Armory Crate (as they are stored in bios), including default fan curves
|
||||
|
||||
33
Settings.Designer.cs
generated
33
Settings.Designer.cs
generated
@@ -48,7 +48,6 @@
|
||||
checkStartup = new CheckBox();
|
||||
panelPerformance = new Panel();
|
||||
buttonFans = new Button();
|
||||
checkBoost = new CheckBox();
|
||||
picturePerf = new PictureBox();
|
||||
labelPerf = new Label();
|
||||
labelCPUFan = new Label();
|
||||
@@ -113,17 +112,17 @@
|
||||
panelMatrix.Controls.Add(pictureMatrix);
|
||||
panelMatrix.Controls.Add(labelMatrix);
|
||||
panelMatrix.Dock = DockStyle.Top;
|
||||
panelMatrix.Location = new Point(16, 806);
|
||||
panelMatrix.Location = new Point(16, 814);
|
||||
panelMatrix.Margin = new Padding(4);
|
||||
panelMatrix.Name = "panelMatrix";
|
||||
panelMatrix.Size = new Size(722, 156);
|
||||
panelMatrix.Size = new Size(722, 180);
|
||||
panelMatrix.TabIndex = 33;
|
||||
//
|
||||
// checkMatrix
|
||||
//
|
||||
checkMatrix.AutoSize = true;
|
||||
checkMatrix.ForeColor = SystemColors.GrayText;
|
||||
checkMatrix.Location = new Point(26, 112);
|
||||
checkMatrix.Location = new Point(28, 109);
|
||||
checkMatrix.Margin = new Padding(4, 2, 4, 2);
|
||||
checkMatrix.Name = "checkMatrix";
|
||||
checkMatrix.Size = new Size(249, 36);
|
||||
@@ -159,7 +158,7 @@
|
||||
buttonMatrix.Name = "buttonMatrix";
|
||||
buttonMatrix.Size = new Size(208, 42);
|
||||
buttonMatrix.TabIndex = 43;
|
||||
buttonMatrix.Text = "Picture";
|
||||
buttonMatrix.Text = "Picture / Gif";
|
||||
buttonMatrix.UseVisualStyleBackColor = false;
|
||||
//
|
||||
// comboMatrixRunning
|
||||
@@ -220,7 +219,7 @@
|
||||
panelBattery.Controls.Add(labelBatteryTitle);
|
||||
panelBattery.Controls.Add(trackBattery);
|
||||
panelBattery.Dock = DockStyle.Top;
|
||||
panelBattery.Location = new Point(16, 962);
|
||||
panelBattery.Location = new Point(16, 994);
|
||||
panelBattery.Margin = new Padding(4);
|
||||
panelBattery.Name = "panelBattery";
|
||||
panelBattery.Size = new Size(722, 148);
|
||||
@@ -291,7 +290,7 @@
|
||||
panelFooter.Controls.Add(buttonQuit);
|
||||
panelFooter.Controls.Add(checkStartup);
|
||||
panelFooter.Dock = DockStyle.Top;
|
||||
panelFooter.Location = new Point(16, 1110);
|
||||
panelFooter.Location = new Point(16, 1142);
|
||||
panelFooter.Margin = new Padding(4);
|
||||
panelFooter.Name = "panelFooter";
|
||||
panelFooter.Size = new Size(722, 64);
|
||||
@@ -323,7 +322,6 @@
|
||||
// panelPerformance
|
||||
//
|
||||
panelPerformance.Controls.Add(buttonFans);
|
||||
panelPerformance.Controls.Add(checkBoost);
|
||||
panelPerformance.Controls.Add(picturePerf);
|
||||
panelPerformance.Controls.Add(labelPerf);
|
||||
panelPerformance.Controls.Add(labelCPUFan);
|
||||
@@ -348,18 +346,6 @@
|
||||
buttonFans.Text = "Fans and Power";
|
||||
buttonFans.UseVisualStyleBackColor = false;
|
||||
//
|
||||
// checkBoost
|
||||
//
|
||||
checkBoost.AutoSize = true;
|
||||
checkBoost.ForeColor = SystemColors.GrayText;
|
||||
checkBoost.Location = new Point(27, 154);
|
||||
checkBoost.Margin = new Padding(4, 2, 4, 2);
|
||||
checkBoost.Name = "checkBoost";
|
||||
checkBoost.Size = new Size(320, 36);
|
||||
checkBoost.TabIndex = 33;
|
||||
checkBoost.Text = "CPU Turbo Boost enabled";
|
||||
checkBoost.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// picturePerf
|
||||
//
|
||||
picturePerf.BackgroundImage = (Image)resources.GetObject("picturePerf.BackgroundImage");
|
||||
@@ -595,7 +581,7 @@
|
||||
//
|
||||
checkScreen.AutoSize = true;
|
||||
checkScreen.ForeColor = SystemColors.GrayText;
|
||||
checkScreen.Location = new Point(27, 154);
|
||||
checkScreen.Location = new Point(27, 153);
|
||||
checkScreen.Margin = new Padding(4, 2, 4, 2);
|
||||
checkScreen.Name = "checkScreen";
|
||||
checkScreen.Size = new Size(527, 36);
|
||||
@@ -683,7 +669,7 @@
|
||||
panelKeyboard.Location = new Point(16, 660);
|
||||
panelKeyboard.Margin = new Padding(4);
|
||||
panelKeyboard.Name = "panelKeyboard";
|
||||
panelKeyboard.Size = new Size(722, 146);
|
||||
panelKeyboard.Size = new Size(722, 154);
|
||||
panelKeyboard.TabIndex = 39;
|
||||
//
|
||||
// tableLayoutKeyboard
|
||||
@@ -775,7 +761,7 @@
|
||||
buttonKeyboardColor.Name = "buttonKeyboardColor";
|
||||
buttonKeyboardColor.Size = new Size(208, 42);
|
||||
buttonKeyboardColor.TabIndex = 39;
|
||||
buttonKeyboardColor.Text = "Color ";
|
||||
buttonKeyboardColor.Text = "Color ";
|
||||
buttonKeyboardColor.UseVisualStyleBackColor = false;
|
||||
//
|
||||
// pictureKeyboard
|
||||
@@ -872,7 +858,6 @@
|
||||
private CheckBox checkStartup;
|
||||
private Panel panelPerformance;
|
||||
private Button buttonFans;
|
||||
private CheckBox checkBoost;
|
||||
private PictureBox picturePerf;
|
||||
private Label labelPerf;
|
||||
private Label labelCPUFan;
|
||||
|
||||
247
Settings.cs
247
Settings.cs
@@ -1,7 +1,6 @@
|
||||
using Starlight.AnimeMatrix;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing.Imaging;
|
||||
using System.Reflection;
|
||||
using System.Timers;
|
||||
|
||||
namespace GHelper
|
||||
@@ -20,14 +19,14 @@ namespace GHelper
|
||||
static System.Timers.Timer aTimer = default!;
|
||||
static System.Timers.Timer matrixTimer = default!;
|
||||
|
||||
public string versionUrl = "http://github.com/seerge/g-helper/releases";
|
||||
|
||||
public string perfName = "Balanced";
|
||||
|
||||
Fans fans;
|
||||
Keyboard keyb;
|
||||
|
||||
static AnimeMatrixDevice mat;
|
||||
static bool matEnabled = false;
|
||||
|
||||
|
||||
public SettingsForm()
|
||||
{
|
||||
@@ -61,7 +60,7 @@ namespace GHelper
|
||||
|
||||
buttonQuit.Click += ButtonQuit_Click;
|
||||
|
||||
checkBoost.Click += CheckBoost_Click;
|
||||
checkGPU.CheckedChanged += CheckGPU_CheckedChanged;
|
||||
|
||||
checkScreen.CheckedChanged += checkScreen_CheckedChanged;
|
||||
|
||||
@@ -77,9 +76,6 @@ namespace GHelper
|
||||
pictureColor.Click += PictureColor_Click;
|
||||
pictureColor2.Click += PictureColor2_Click;
|
||||
|
||||
labelVersion.Text = "Version " + Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
||||
labelVersion.Click += LabelVersion_Click;
|
||||
|
||||
labelCPUFan.Click += LabelCPUFan_Click;
|
||||
labelGPUFan.Click += LabelCPUFan_Click;
|
||||
|
||||
@@ -93,11 +89,52 @@ namespace GHelper
|
||||
|
||||
buttonMatrix.Click += ButtonMatrix_Click;
|
||||
|
||||
checkStartup.CheckedChanged += CheckStartup_CheckedChanged;
|
||||
|
||||
labelVersion.Click += LabelVersion_Click;
|
||||
|
||||
SetTimer();
|
||||
|
||||
}
|
||||
|
||||
private void CheckGPU_CheckedChanged(object? sender, EventArgs e)
|
||||
{
|
||||
if (sender is null) return;
|
||||
CheckBox check = (CheckBox)sender;
|
||||
Program.config.setConfig("gpu_auto", check.Checked ? 1 : 0);
|
||||
}
|
||||
|
||||
public void SetVersionLabel(string label, string url = null)
|
||||
{
|
||||
labelVersion.Text = label;
|
||||
if (url is not null)
|
||||
{
|
||||
versionUrl = url;
|
||||
labelVersion.ForeColor = Color.Red;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void LabelVersion_Click(object? sender, EventArgs e)
|
||||
{
|
||||
Process.Start(new ProcessStartInfo(versionUrl) { UseShellExecute = true });
|
||||
}
|
||||
|
||||
|
||||
private void CheckStartup_CheckedChanged(object? sender, EventArgs e)
|
||||
{
|
||||
if (sender is null) return;
|
||||
CheckBox chk = (CheckBox)sender;
|
||||
|
||||
if (chk.Checked)
|
||||
{
|
||||
Startup.Schedule();
|
||||
}
|
||||
else
|
||||
{
|
||||
Startup.UnSchedule();
|
||||
}
|
||||
}
|
||||
|
||||
private void CheckMatrix_CheckedChanged(object? sender, EventArgs e)
|
||||
{
|
||||
@@ -240,6 +277,8 @@ namespace GHelper
|
||||
|
||||
StopMatrixTimer();
|
||||
|
||||
mat.SetProvider();
|
||||
|
||||
if (brightness == 0 || (auto && Plugged != PowerLineStatus.Online))
|
||||
{
|
||||
mat.SetDisplayState(false);
|
||||
@@ -258,6 +297,7 @@ namespace GHelper
|
||||
{
|
||||
mat.SetBuiltInAnimation(true, animation);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -270,11 +310,6 @@ namespace GHelper
|
||||
RefreshSensors();
|
||||
}
|
||||
|
||||
private void LabelVersion_Click(object? sender, EventArgs e)
|
||||
{
|
||||
Process.Start(new ProcessStartInfo("http://github.com/seerge/g-helper/releases") { UseShellExecute = true });
|
||||
}
|
||||
|
||||
private void PictureColor2_Click(object? sender, EventArgs e)
|
||||
{
|
||||
|
||||
@@ -373,36 +408,26 @@ namespace GHelper
|
||||
public void InitMatrix()
|
||||
{
|
||||
|
||||
matrixTimer = new System.Timers.Timer();
|
||||
matrixTimer.Enabled = false;
|
||||
matrixTimer.Interval = 100;
|
||||
|
||||
try
|
||||
{
|
||||
matEnabled = true;
|
||||
mat = new AnimeMatrixDevice();
|
||||
matrixTimer = new System.Timers.Timer(100);
|
||||
matrixTimer.Elapsed += MatrixTimer_Elapsed;
|
||||
}
|
||||
catch
|
||||
{
|
||||
matEnabled = false;
|
||||
Debug.WriteLine("Anime Matrix not detected");
|
||||
}
|
||||
|
||||
if (!matEnabled)
|
||||
{
|
||||
panelMatrix.Visible = false;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
int brightness = Program.config.getConfig("matrix_brightness");
|
||||
int running = Program.config.getConfig("matrix_running");
|
||||
|
||||
comboMatrix.SelectedIndex = (brightness != -1) ? brightness : 0;
|
||||
comboMatrixRunning.SelectedIndex = (running != -1) ? running : 0;
|
||||
int brightness = Program.config.getConfig("matrix_brightness");
|
||||
int running = Program.config.getConfig("matrix_running");
|
||||
|
||||
comboMatrix.SelectedIndex = (brightness != -1) ? brightness : 0;
|
||||
comboMatrixRunning.SelectedIndex = (running != -1) ? running : 0;
|
||||
|
||||
checkMatrix.Checked = (Program.config.getConfig("matrix_auto") == 1);
|
||||
|
||||
checkMatrix.Checked = (Program.config.getConfig("matrix_auto") == 1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -468,19 +493,6 @@ namespace GHelper
|
||||
SetAuraMode(cmb.SelectedIndex);
|
||||
}
|
||||
|
||||
|
||||
private void CheckBoost_Click(object? sender, EventArgs e)
|
||||
{
|
||||
if (sender is null)
|
||||
return;
|
||||
|
||||
CheckBox chk = (CheckBox)sender;
|
||||
if (chk.Checked)
|
||||
NativeMethods.SetCPUBoost(2);
|
||||
else
|
||||
NativeMethods.SetCPUBoost(0);
|
||||
}
|
||||
|
||||
private void Button120Hz_Click(object? sender, EventArgs e)
|
||||
{
|
||||
SetScreen(1000, 1);
|
||||
@@ -506,28 +518,15 @@ namespace GHelper
|
||||
frequency = 120;
|
||||
}
|
||||
|
||||
if (frequency > 0)
|
||||
NativeMethods.SetRefreshRate(frequency);
|
||||
|
||||
try
|
||||
{
|
||||
if (overdrive > 0)
|
||||
Program.wmi.DeviceSet(ASUSWmi.ScreenOverdrive, overdrive);
|
||||
}
|
||||
catch
|
||||
{
|
||||
Debug.WriteLine("Screen Overdrive not supported");
|
||||
}
|
||||
if (frequency <= 0) return;
|
||||
|
||||
NativeMethods.SetRefreshRate(frequency);
|
||||
if (overdrive > 0)
|
||||
Program.wmi.DeviceSet(ASUSWmi.ScreenOverdrive, overdrive);
|
||||
|
||||
InitScreen();
|
||||
}
|
||||
Debug.WriteLine(frequency);
|
||||
|
||||
|
||||
public void InitBoost()
|
||||
{
|
||||
int boost = NativeMethods.GetCPUBoost();
|
||||
checkBoost.Checked = (boost > 0);
|
||||
}
|
||||
|
||||
public void InitScreen()
|
||||
@@ -702,12 +701,36 @@ namespace GHelper
|
||||
Program.wmi.DeviceSet(ASUSWmi.PPT_TotalA0, limit_total);
|
||||
Program.wmi.DeviceSet(ASUSWmi.PPT_TotalA1, limit_total);
|
||||
Program.wmi.DeviceSet(ASUSWmi.PPT_CPUB0, limit_cpu);
|
||||
|
||||
|
||||
Debug.WriteLine(limit_total.ToString() + ", " + limit_cpu.ToString());
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void AutoFansAndPower()
|
||||
{
|
||||
|
||||
if (Program.config.getConfigPerf("auto_apply") == 1)
|
||||
{
|
||||
Program.wmi.SetFanCurve(0, Program.config.getFanConfig(0));
|
||||
Program.wmi.SetFanCurve(1, Program.config.getFanConfig(1));
|
||||
}
|
||||
|
||||
if (Program.config.getConfigPerf("auto_apply_power") == 1)
|
||||
{
|
||||
var timer = new System.Timers.Timer(500);
|
||||
timer.Elapsed += delegate
|
||||
{
|
||||
timer.Stop();
|
||||
timer.Dispose();
|
||||
SetPower();
|
||||
};
|
||||
timer.Start();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void SetPerformanceMode(int PerformanceMode = ASUSWmi.PerformanceBalanced, bool notify = false)
|
||||
{
|
||||
|
||||
@@ -737,23 +760,7 @@ namespace GHelper
|
||||
Program.config.setConfig("performance_mode", PerformanceMode);
|
||||
|
||||
Program.wmi.DeviceSet(ASUSWmi.PerformanceMode, PerformanceMode);
|
||||
|
||||
if (Program.config.getConfigPerf("auto_apply") == 1)
|
||||
{
|
||||
Program.wmi.SetFanCurve(0, Program.config.getFanConfig(0));
|
||||
Program.wmi.SetFanCurve(1, Program.config.getFanConfig(1));
|
||||
}
|
||||
|
||||
if (Program.config.getConfigPerf("auto_apply_power") == 1)
|
||||
{
|
||||
SetPower();
|
||||
}
|
||||
|
||||
if (fans != null && fans.Text != "")
|
||||
{
|
||||
fans.InitFans();
|
||||
fans.InitPower();
|
||||
}
|
||||
Debug.WriteLine("Perf:" + PerformanceMode);
|
||||
|
||||
if (notify && (oldMode != PerformanceMode))
|
||||
{
|
||||
@@ -767,6 +774,16 @@ namespace GHelper
|
||||
}
|
||||
}
|
||||
|
||||
AutoFansAndPower();
|
||||
|
||||
if (fans != null && fans.Text != "")
|
||||
{
|
||||
fans.InitFans();
|
||||
fans.InitPower();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -795,7 +812,6 @@ namespace GHelper
|
||||
else
|
||||
SetScreen(60, 0);
|
||||
|
||||
InitScreen();
|
||||
|
||||
}
|
||||
|
||||
@@ -808,20 +824,17 @@ namespace GHelper
|
||||
int eco = Program.wmi.DeviceGet(ASUSWmi.GPUEco);
|
||||
int mux = Program.wmi.DeviceGet(ASUSWmi.GPUMux);
|
||||
|
||||
|
||||
if (mux == 0) // GPU in Ultimate, ignore
|
||||
return;
|
||||
else
|
||||
{
|
||||
if (eco == 1 && Plugged == PowerLineStatus.Online) // Eco going Standard on plugged
|
||||
{
|
||||
Program.wmi.DeviceSet(ASUSWmi.GPUEco, 0);
|
||||
InitGPUMode();
|
||||
SetEcoGPU(0);
|
||||
}
|
||||
else if (eco == 0 && Plugged != PowerLineStatus.Online) // Standard going Eco on plugged
|
||||
{
|
||||
Program.wmi.DeviceSet(ASUSWmi.GPUEco, 1);
|
||||
InitGPUMode();
|
||||
SetEcoGPU(1);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -844,10 +857,13 @@ namespace GHelper
|
||||
else
|
||||
GpuMode = ASUSWmi.GPUModeStandard;
|
||||
|
||||
if (mux != 1)
|
||||
Disable_Ultimate();
|
||||
buttonUltimate.Visible = (mux == 1);
|
||||
}
|
||||
|
||||
ButtonEnabled(buttonEco, true);
|
||||
ButtonEnabled(buttonStandard, true);
|
||||
ButtonEnabled(buttonUltimate, true);
|
||||
|
||||
Program.config.setConfig("gpu_mode", GpuMode);
|
||||
VisualiseGPUMode(GpuMode);
|
||||
|
||||
@@ -855,7 +871,30 @@ namespace GHelper
|
||||
|
||||
}
|
||||
|
||||
public void SetGPUMode(int GPUMode = ASUSWmi.GPUModeStandard)
|
||||
|
||||
public void SetEcoGPU(int eco)
|
||||
{
|
||||
|
||||
ButtonEnabled(buttonEco, false);
|
||||
ButtonEnabled(buttonStandard, false);
|
||||
ButtonEnabled(buttonUltimate, false);
|
||||
|
||||
labelGPU.Text = "GPU Mode: Changing ...";
|
||||
|
||||
new Thread(() =>
|
||||
{
|
||||
Thread.CurrentThread.IsBackground = true;
|
||||
Program.wmi.DeviceSet(ASUSWmi.GPUEco, eco);
|
||||
Program.settingsForm.BeginInvoke(delegate
|
||||
{
|
||||
InitGPUMode();
|
||||
AutoScreen(SystemInformation.PowerStatus.PowerLineStatus);
|
||||
});
|
||||
}).Start();
|
||||
|
||||
}
|
||||
|
||||
public void SetGPUMode(int GPUMode)
|
||||
{
|
||||
|
||||
int CurrentGPU = Program.config.getConfig("gpu_mode");
|
||||
@@ -890,13 +929,13 @@ namespace GHelper
|
||||
else if (GPUMode == ASUSWmi.GPUModeEco)
|
||||
{
|
||||
VisualiseGPUMode(GPUMode);
|
||||
Program.wmi.DeviceSet(ASUSWmi.GPUEco, 1);
|
||||
SetEcoGPU(1);
|
||||
changed = true;
|
||||
}
|
||||
else if (GPUMode == ASUSWmi.GPUModeStandard)
|
||||
{
|
||||
VisualiseGPUMode(GPUMode);
|
||||
Program.wmi.DeviceSet(ASUSWmi.GPUEco, 0);
|
||||
SetEcoGPU(0);
|
||||
changed = true;
|
||||
}
|
||||
|
||||
@@ -952,6 +991,7 @@ namespace GHelper
|
||||
Program.trayIcon.Icon = GHelper.Properties.Resources.standard;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -975,28 +1015,16 @@ namespace GHelper
|
||||
|
||||
}
|
||||
|
||||
public void Disable_Ultimate()
|
||||
public void ButtonEnabled(Button but, bool enabled)
|
||||
{
|
||||
buttonUltimate.Enabled = false;
|
||||
buttonUltimate.BackColor = SystemColors.ControlLight;
|
||||
but.Enabled = enabled;
|
||||
but.BackColor = enabled ? SystemColors.ControlLightLight : SystemColors.ControlLight;
|
||||
}
|
||||
|
||||
public void SetStartupCheck(bool status)
|
||||
{
|
||||
checkStartup.Checked = status;
|
||||
}
|
||||
private void checkStartup_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
CheckBox chk = (CheckBox)sender;
|
||||
if (chk.Checked)
|
||||
{
|
||||
Startup.Schedule();
|
||||
}
|
||||
else
|
||||
{
|
||||
Startup.UnSchedule();
|
||||
}
|
||||
}
|
||||
|
||||
public void SetBatteryChargeLimit(int limit)
|
||||
{
|
||||
@@ -1018,13 +1046,6 @@ namespace GHelper
|
||||
SetBatteryChargeLimit(bar.Value);
|
||||
}
|
||||
|
||||
private void checkGPU_CheckedChanged(object? sender, EventArgs e)
|
||||
{
|
||||
if (sender is null) return;
|
||||
CheckBox check = (CheckBox)sender;
|
||||
Program.config.setConfig("gpu_auto", check.Checked ? 1 : 0);
|
||||
}
|
||||
|
||||
|
||||
private void checkScreen_CheckedChanged(object? sender, EventArgs e)
|
||||
{
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<windowsSettings>
|
||||
<!--<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitor/dpiAwareness>-->
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
||||
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2, PerMonitor, System</dpiAwareness>
|
||||
</windowsSettings>
|
||||
</application>
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
ps2exe .\ghelper.ps1 g14-helper.exe -title 'G14 Helper' -DPIAware -winFormsDPIAware -requireAdmin -iconFile 'standard.ico' -noConsole -copyright 'G14 Helper Tool' -noOutput
|
||||
File diff suppressed because one or more lines are too long
BIN
old-ps1-script/ghelper.zip
Normal file
BIN
old-ps1-script/ghelper.zip
Normal file
Binary file not shown.
BIN
screenshot.png
BIN
screenshot.png
Binary file not shown.
|
Before Width: | Height: | Size: 2.4 MiB After Width: | Height: | Size: 2.4 MiB |
Reference in New Issue
Block a user