mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Compare commits
31 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7683e68df3 | ||
|
|
e45bcdf8a5 | ||
|
|
ab8d42c216 | ||
|
|
d248fcf384 | ||
|
|
9bb5e41a5d | ||
|
|
bc965c003d | ||
|
|
a6cfc91de2 | ||
|
|
9ca6ec657f | ||
|
|
89d7930323 | ||
|
|
e26d26b498 | ||
|
|
a6d0dde4b0 | ||
|
|
f68d53aaf4 | ||
|
|
a2ea3d18fd | ||
|
|
f77fcc940f | ||
|
|
dd4d85f254 | ||
|
|
2afbde814f | ||
|
|
b6b06a3802 | ||
|
|
4d58945688 | ||
|
|
9aaf0159e5 | ||
|
|
3cbaf1eb52 | ||
|
|
c76fbeab37 | ||
|
|
15d580bbe3 | ||
|
|
2ec64bf8b5 | ||
|
|
254be71e88 | ||
|
|
e9ec8f0e8f | ||
|
|
0ef44a0495 | ||
|
|
e725760b24 | ||
|
|
a83ab4884e | ||
|
|
7bfd10c65d | ||
|
|
67b541b145 | ||
|
|
f1ae14652f |
18
ASUSWmi.cs
18
ASUSWmi.cs
@@ -27,12 +27,16 @@ public class ASUSWmi
|
|||||||
public const uint DevsCPUFanCurve = 0x00110024;
|
public const uint DevsCPUFanCurve = 0x00110024;
|
||||||
public const uint DevsGPUFanCurve = 0x00110025;
|
public const uint DevsGPUFanCurve = 0x00110025;
|
||||||
|
|
||||||
public const int PPT_TotalA0 = 0x001200A0;
|
public const int PPT_TotalA0 = 0x001200A0; // Total PPT on 2022 and CPU PPT on 2021
|
||||||
public const int PPT_TotalA1 = 0x001200A1;
|
public const int PPT_EDCA1 = 0x001200A1; // CPU EDC
|
||||||
|
public const int PPT_TDCA2 = 0x001200A2; // CPU TDC
|
||||||
|
public const int PPT_APUA3 = 0x001200A3; // APU PPT ON 2021, doesn't work on 2022
|
||||||
|
|
||||||
public const int PPT_CPUB0 = 0x001200B0;
|
public const int PPT_CPUB0 = 0x001200B0; // CPU PPT on 2022
|
||||||
public const int PPT_CPUB1 = 0x001200B1;
|
public const int PPT_CPUB1 = 0x001200B1; // APU PPT on 2022
|
||||||
public const int PPT_CPUA2 = 0x001200A2;
|
|
||||||
|
public const int PPT_APUC1 = 0x001200C1;
|
||||||
|
public const int PPT_APUC2 = 0x001200C2;
|
||||||
|
|
||||||
public const int PerformanceBalanced = 0;
|
public const int PerformanceBalanced = 0;
|
||||||
public const int PerformanceTurbo = 1;
|
public const int PerformanceTurbo = 1;
|
||||||
@@ -44,11 +48,11 @@ public class ASUSWmi
|
|||||||
|
|
||||||
|
|
||||||
public const int MaxTotal = 150;
|
public const int MaxTotal = 150;
|
||||||
public const int MinTotal = 15;
|
public const int MinTotal = 5;
|
||||||
public const int DefaultTotal = 125;
|
public const int DefaultTotal = 125;
|
||||||
|
|
||||||
public const int MaxCPU = 90;
|
public const int MaxCPU = 90;
|
||||||
public const int MinCPU = 15;
|
public const int MinCPU = 5;
|
||||||
public const int DefaultCPU = 80;
|
public const int DefaultCPU = 80;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
57
Fans.Designer.cs
generated
57
Fans.Designer.cs
generated
@@ -31,11 +31,12 @@
|
|||||||
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
|
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
|
||||||
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
|
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
|
||||||
panelFans = new Panel();
|
panelFans = new Panel();
|
||||||
|
labelBoost = new Label();
|
||||||
|
comboBoost = new ComboBox();
|
||||||
picturePerf = new PictureBox();
|
picturePerf = new PictureBox();
|
||||||
tableFanCharts = new TableLayoutPanel();
|
tableFanCharts = new TableLayoutPanel();
|
||||||
chartGPU = new System.Windows.Forms.DataVisualization.Charting.Chart();
|
chartGPU = new System.Windows.Forms.DataVisualization.Charting.Chart();
|
||||||
chartCPU = new System.Windows.Forms.DataVisualization.Charting.Chart();
|
chartCPU = new System.Windows.Forms.DataVisualization.Charting.Chart();
|
||||||
checkBoost = new CheckBox();
|
|
||||||
labelFans = new Label();
|
labelFans = new Label();
|
||||||
checkAuto = new CheckBox();
|
checkAuto = new CheckBox();
|
||||||
buttonReset = new Button();
|
buttonReset = new Button();
|
||||||
@@ -72,9 +73,10 @@
|
|||||||
//
|
//
|
||||||
// panelFans
|
// panelFans
|
||||||
//
|
//
|
||||||
|
panelFans.Controls.Add(labelBoost);
|
||||||
|
panelFans.Controls.Add(comboBoost);
|
||||||
panelFans.Controls.Add(picturePerf);
|
panelFans.Controls.Add(picturePerf);
|
||||||
panelFans.Controls.Add(tableFanCharts);
|
panelFans.Controls.Add(tableFanCharts);
|
||||||
panelFans.Controls.Add(checkBoost);
|
|
||||||
panelFans.Controls.Add(labelFans);
|
panelFans.Controls.Add(labelFans);
|
||||||
panelFans.Controls.Add(checkAuto);
|
panelFans.Controls.Add(checkAuto);
|
||||||
panelFans.Controls.Add(buttonReset);
|
panelFans.Controls.Add(buttonReset);
|
||||||
@@ -87,6 +89,26 @@
|
|||||||
panelFans.Size = new Size(824, 1159);
|
panelFans.Size = new Size(824, 1159);
|
||||||
panelFans.TabIndex = 12;
|
panelFans.TabIndex = 12;
|
||||||
//
|
//
|
||||||
|
// labelBoost
|
||||||
|
//
|
||||||
|
labelBoost.AutoSize = true;
|
||||||
|
labelBoost.Location = new Point(397, 19);
|
||||||
|
labelBoost.Name = "labelBoost";
|
||||||
|
labelBoost.Size = new Size(125, 32);
|
||||||
|
labelBoost.TabIndex = 39;
|
||||||
|
labelBoost.Text = "CPU Boost";
|
||||||
|
//
|
||||||
|
// comboBoost
|
||||||
|
//
|
||||||
|
comboBoost.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||||
|
comboBoost.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||||
|
comboBoost.FormattingEnabled = true;
|
||||||
|
comboBoost.Items.AddRange(new object[] { "Disabled", "Enabled", "Aggressive", "Efficient Enabled", "Efficient Aggressive" });
|
||||||
|
comboBoost.Location = new Point(526, 15);
|
||||||
|
comboBoost.Name = "comboBoost";
|
||||||
|
comboBoost.Size = new Size(266, 40);
|
||||||
|
comboBoost.TabIndex = 38;
|
||||||
|
//
|
||||||
// picturePerf
|
// picturePerf
|
||||||
//
|
//
|
||||||
picturePerf.BackgroundImage = Properties.Resources.icons8_fan_head_96;
|
picturePerf.BackgroundImage = Properties.Resources.icons8_fan_head_96;
|
||||||
@@ -106,7 +128,7 @@
|
|||||||
tableFanCharts.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
|
tableFanCharts.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
|
||||||
tableFanCharts.Controls.Add(chartGPU, 0, 1);
|
tableFanCharts.Controls.Add(chartGPU, 0, 1);
|
||||||
tableFanCharts.Controls.Add(chartCPU, 0, 0);
|
tableFanCharts.Controls.Add(chartCPU, 0, 0);
|
||||||
tableFanCharts.Location = new Point(28, 68);
|
tableFanCharts.Location = new Point(28, 64);
|
||||||
tableFanCharts.Margin = new Padding(6);
|
tableFanCharts.Margin = new Padding(6);
|
||||||
tableFanCharts.Name = "tableFanCharts";
|
tableFanCharts.Name = "tableFanCharts";
|
||||||
tableFanCharts.RowCount = 2;
|
tableFanCharts.RowCount = 2;
|
||||||
@@ -114,7 +136,7 @@
|
|||||||
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.RowStyles.Add(new RowStyle(SizeType.Absolute, 40F));
|
tableFanCharts.RowStyles.Add(new RowStyle(SizeType.Absolute, 40F));
|
||||||
tableFanCharts.Size = new Size(764, 988);
|
tableFanCharts.Size = new Size(764, 992);
|
||||||
tableFanCharts.TabIndex = 36;
|
tableFanCharts.TabIndex = 36;
|
||||||
//
|
//
|
||||||
// chartGPU
|
// chartGPU
|
||||||
@@ -122,10 +144,10 @@
|
|||||||
chartArea1.Name = "ChartArea1";
|
chartArea1.Name = "ChartArea1";
|
||||||
chartGPU.ChartAreas.Add(chartArea1);
|
chartGPU.ChartAreas.Add(chartArea1);
|
||||||
chartGPU.Dock = DockStyle.Fill;
|
chartGPU.Dock = DockStyle.Fill;
|
||||||
chartGPU.Location = new Point(2, 504);
|
chartGPU.Location = new Point(2, 506);
|
||||||
chartGPU.Margin = new Padding(2, 10, 2, 10);
|
chartGPU.Margin = new Padding(2, 10, 2, 10);
|
||||||
chartGPU.Name = "chartGPU";
|
chartGPU.Name = "chartGPU";
|
||||||
chartGPU.Size = new Size(760, 474);
|
chartGPU.Size = new Size(760, 476);
|
||||||
chartGPU.TabIndex = 17;
|
chartGPU.TabIndex = 17;
|
||||||
chartGPU.Text = "chart1";
|
chartGPU.Text = "chart1";
|
||||||
//
|
//
|
||||||
@@ -137,22 +159,10 @@
|
|||||||
chartCPU.Location = new Point(2, 10);
|
chartCPU.Location = new Point(2, 10);
|
||||||
chartCPU.Margin = new Padding(2, 10, 2, 10);
|
chartCPU.Margin = new Padding(2, 10, 2, 10);
|
||||||
chartCPU.Name = "chartCPU";
|
chartCPU.Name = "chartCPU";
|
||||||
chartCPU.Size = new Size(760, 474);
|
chartCPU.Size = new Size(760, 476);
|
||||||
chartCPU.TabIndex = 14;
|
chartCPU.TabIndex = 14;
|
||||||
chartCPU.Text = "chartCPU";
|
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
|
||||||
//
|
//
|
||||||
labelFans.AutoSize = true;
|
labelFans.AutoSize = true;
|
||||||
@@ -268,7 +278,7 @@
|
|||||||
panelCPU.Controls.Add(labelCPU);
|
panelCPU.Controls.Add(labelCPU);
|
||||||
panelCPU.Controls.Add(label2);
|
panelCPU.Controls.Add(label2);
|
||||||
panelCPU.Controls.Add(trackCPU);
|
panelCPU.Controls.Add(trackCPU);
|
||||||
panelCPU.Location = new Point(184, 90);
|
panelCPU.Location = new Point(184, 93);
|
||||||
panelCPU.Margin = new Padding(4);
|
panelCPU.Margin = new Padding(4);
|
||||||
panelCPU.Name = "panelCPU";
|
panelCPU.Name = "panelCPU";
|
||||||
panelCPU.Size = new Size(160, 510);
|
panelCPU.Size = new Size(160, 510);
|
||||||
@@ -315,7 +325,7 @@
|
|||||||
panelTotal.Controls.Add(labelTotal);
|
panelTotal.Controls.Add(labelTotal);
|
||||||
panelTotal.Controls.Add(label1);
|
panelTotal.Controls.Add(label1);
|
||||||
panelTotal.Controls.Add(trackTotal);
|
panelTotal.Controls.Add(trackTotal);
|
||||||
panelTotal.Location = new Point(16, 90);
|
panelTotal.Location = new Point(16, 93);
|
||||||
panelTotal.Margin = new Padding(4);
|
panelTotal.Margin = new Padding(4);
|
||||||
panelTotal.Name = "panelTotal";
|
panelTotal.Name = "panelTotal";
|
||||||
panelTotal.Size = new Size(160, 512);
|
panelTotal.Size = new Size(160, 512);
|
||||||
@@ -362,7 +372,7 @@
|
|||||||
//
|
//
|
||||||
labelApplied.AutoSize = true;
|
labelApplied.AutoSize = true;
|
||||||
labelApplied.ForeColor = Color.Tomato;
|
labelApplied.ForeColor = Color.Tomato;
|
||||||
labelApplied.Location = new Point(56, 48);
|
labelApplied.Location = new Point(56, 54);
|
||||||
labelApplied.Margin = new Padding(4, 0, 4, 0);
|
labelApplied.Margin = new Padding(4, 0, 4, 0);
|
||||||
labelApplied.Name = "labelApplied";
|
labelApplied.Name = "labelApplied";
|
||||||
labelApplied.Size = new Size(143, 32);
|
labelApplied.Size = new Size(143, 32);
|
||||||
@@ -453,9 +463,10 @@
|
|||||||
private TableLayoutPanel tableFanCharts;
|
private TableLayoutPanel tableFanCharts;
|
||||||
private System.Windows.Forms.DataVisualization.Charting.Chart chartGPU;
|
private System.Windows.Forms.DataVisualization.Charting.Chart chartGPU;
|
||||||
private System.Windows.Forms.DataVisualization.Charting.Chart chartCPU;
|
private System.Windows.Forms.DataVisualization.Charting.Chart chartCPU;
|
||||||
private CheckBox checkBoost;
|
|
||||||
private Label labelFans;
|
private Label labelFans;
|
||||||
private PictureBox picturePerf;
|
private PictureBox picturePerf;
|
||||||
private PictureBox pictureBox1;
|
private PictureBox pictureBox1;
|
||||||
|
private ComboBox comboBoost;
|
||||||
|
private Label labelBoost;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
31
Fans.cs
31
Fans.cs
@@ -115,7 +115,7 @@ namespace GHelper
|
|||||||
InitPower();
|
InitPower();
|
||||||
InitBoost();
|
InitBoost();
|
||||||
|
|
||||||
checkBoost.Click += CheckBoost_Click;
|
comboBoost.SelectedIndexChanged += ComboBoost_Changed;
|
||||||
|
|
||||||
Shown += Fans_Shown;
|
Shown += Fans_Shown;
|
||||||
|
|
||||||
@@ -125,19 +125,15 @@ namespace GHelper
|
|||||||
public void InitBoost()
|
public void InitBoost()
|
||||||
{
|
{
|
||||||
int boost = NativeMethods.GetCPUBoost();
|
int boost = NativeMethods.GetCPUBoost();
|
||||||
checkBoost.Checked = (boost > 0);
|
if (boost >= 0)
|
||||||
|
comboBoost.SelectedIndex = boost;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CheckBoost_Click(object? sender, EventArgs e)
|
private void ComboBoost_Changed(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (sender is null)
|
if (sender is null) return;
|
||||||
return;
|
ComboBox cmb = (ComboBox)sender;
|
||||||
|
NativeMethods.SetCPUBoost(cmb.SelectedIndex);
|
||||||
CheckBox chk = (CheckBox)sender;
|
|
||||||
if (chk.Checked)
|
|
||||||
NativeMethods.SetCPUBoost(2);
|
|
||||||
else
|
|
||||||
NativeMethods.SetCPUBoost(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CheckApplyPower_Click(object? sender, EventArgs e)
|
private void CheckApplyPower_Click(object? sender, EventArgs e)
|
||||||
@@ -172,8 +168,17 @@ namespace GHelper
|
|||||||
public void InitPower(bool changed = false)
|
public void InitPower(bool changed = false)
|
||||||
{
|
{
|
||||||
|
|
||||||
panelPower.Visible = (Program.wmi.DeviceGet(ASUSWmi.PPT_TotalA0) >= 0);
|
bool cpuBmode = (Program.wmi.DeviceGet(ASUSWmi.PPT_CPUB0) >= 0); // 2022 model +
|
||||||
panelCPU.Visible = (Program.wmi.DeviceGet(ASUSWmi.PPT_CPUB0) >= 0);
|
bool cpuAmode = (Program.wmi.DeviceGet(ASUSWmi.PPT_TotalA0) >= 0); // 2021 model +
|
||||||
|
|
||||||
|
panelPower.Visible = cpuAmode;
|
||||||
|
panelCPU.Visible = cpuBmode;
|
||||||
|
|
||||||
|
// Yes, that's stupid, but Total slider on 2021 model actually adjusts CPU PPT
|
||||||
|
if (!cpuBmode)
|
||||||
|
{
|
||||||
|
label1.Text = "CPU SPPT";
|
||||||
|
}
|
||||||
|
|
||||||
int limit_total;
|
int limit_total;
|
||||||
int limit_cpu;
|
int limit_cpu;
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
<PlatformTarget>x64</PlatformTarget>
|
<PlatformTarget>x64</PlatformTarget>
|
||||||
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
||||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||||
<AssemblyVersion>0.26</AssemblyVersion>
|
<AssemblyVersion>0.28</AssemblyVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -19,14 +19,12 @@ public class NvidiaGpuTemperatureProvider : IGpuTemperatureProvider {
|
|||||||
if (!IsValid)
|
if (!IsValid)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
|
PhysicalGPU internalGpu = _internalGpu!;
|
||||||
IThermalSensor? gpuSensor =
|
IThermalSensor? gpuSensor =
|
||||||
GPUApi.GetThermalSettings(_internalGpu!.Handle).Sensors
|
GPUApi.GetThermalSettings(internalGpu.Handle).Sensors
|
||||||
.FirstOrDefault(s => s.Target == ThermalSettingsTarget.GPU);
|
.FirstOrDefault(s => s.Target == ThermalSettingsTarget.GPU);
|
||||||
|
|
||||||
if (gpuSensor == null)
|
return gpuSensor?.CurrentTemperature;
|
||||||
return null;
|
|
||||||
|
|
||||||
return gpuSensor.CurrentTemperature;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose() {
|
public void Dispose() {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using GHelper.Gpu;
|
using GHelper.Gpu;
|
||||||
|
|
||||||
public class HardwareMonitor
|
public static class HardwareMonitor
|
||||||
{
|
{
|
||||||
private static IGpuTemperatureProvider? GpuTemperatureProvider;
|
private static IGpuTemperatureProvider? GpuTemperatureProvider;
|
||||||
|
|
||||||
@@ -19,24 +19,47 @@ public class HardwareMonitor
|
|||||||
var ct = new PerformanceCounter("Thermal Zone Information", "Temperature", @"\_TZ.THRM", true);
|
var ct = new PerformanceCounter("Thermal Zone Information", "Temperature", @"\_TZ.THRM", true);
|
||||||
cpuTemp = ct.NextValue() - 273;
|
cpuTemp = ct.NextValue() - 273;
|
||||||
ct.Dispose();
|
ct.Dispose();
|
||||||
|
} catch
|
||||||
|
{
|
||||||
|
Logger.WriteLine("Failed reading CPU temp");
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
var cb = new PerformanceCounter("Power Meter", "Power", "Power Meter (0)", true);
|
var cb = new PerformanceCounter("Power Meter", "Power", "Power Meter (0)", true);
|
||||||
batteryDischarge = cb.NextValue() / 1000;
|
batteryDischarge = cb.NextValue() / 1000;
|
||||||
cb.Dispose();
|
cb.Dispose();
|
||||||
|
|
||||||
gpuTemp = GpuTemperatureProvider?.GetCurrentTemperature();
|
} catch
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
{
|
||||||
Logger.WriteLine("Failed reading sensors");
|
Logger.WriteLine("Failed reading Battery discharge");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
gpuTemp = GpuTemperatureProvider?.GetCurrentTemperature();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
gpuTemp = null;
|
||||||
|
Logger.WriteLine("Failed reading GPU temp");
|
||||||
|
Logger.WriteLine(ex.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void RecreateGpuTemperatureProviderWithRetry() {
|
||||||
|
RecreateGpuTemperatureProvider();
|
||||||
|
|
||||||
|
// Re-enabling the discrete GPU takes a bit of time,
|
||||||
|
// so a simple workaround is to refresh again after that happens
|
||||||
|
Task.Run(async () => {
|
||||||
|
await Task.Delay(TimeSpan.FromSeconds(3));
|
||||||
|
RecreateGpuTemperatureProvider();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void RecreateGpuTemperatureProvider() {
|
public static void RecreateGpuTemperatureProvider() {
|
||||||
try {
|
try {
|
||||||
if (GpuTemperatureProvider != null) {
|
GpuTemperatureProvider?.Dispose();
|
||||||
GpuTemperatureProvider.Dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Detect valid GPU temperature provider.
|
// Detect valid GPU temperature provider.
|
||||||
// We start with NVIDIA because there's always at least an integrated AMD GPU
|
// We start with NVIDIA because there's always at least an integrated AMD GPU
|
||||||
@@ -57,7 +80,7 @@ public class HardwareMonitor
|
|||||||
|
|
||||||
GpuTemperatureProvider = null;
|
GpuTemperatureProvider = null;
|
||||||
} finally {
|
} finally {
|
||||||
Debug.WriteLine($"GpuTemperatureProvider: {GpuTemperatureProvider?.GetType().Name}");
|
Logger.WriteLine($"GpuTemperatureProvider: {GpuTemperatureProvider?.GetType().Name}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using System.ComponentModel;
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using static Tools.ScreenInterrogatory;
|
using static Tools.ScreenInterrogatory;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace Tools
|
namespace Tools
|
||||||
{
|
{
|
||||||
@@ -457,6 +458,15 @@ public class NativeMethods
|
|||||||
static readonly Guid GUID_CPU = new Guid("54533251-82be-4824-96c1-47b60b740d00");
|
static readonly Guid GUID_CPU = new Guid("54533251-82be-4824-96c1-47b60b740d00");
|
||||||
static readonly Guid GUID_BOOST = new Guid("be337238-0d82-4146-a960-4f3749d470c7");
|
static readonly Guid GUID_BOOST = new Guid("be337238-0d82-4146-a960-4f3749d470c7");
|
||||||
|
|
||||||
|
[DllImportAttribute("powrprof.dll", EntryPoint = "PowerGetActualOverlayScheme")]
|
||||||
|
public static extern uint PowerGetActualOverlayScheme(out Guid ActualOverlayGuid);
|
||||||
|
|
||||||
|
[DllImportAttribute("powrprof.dll", EntryPoint = "PowerGetEffectiveOverlayScheme")]
|
||||||
|
public static extern uint PowerGetEffectiveOverlayScheme(out Guid EffectiveOverlayGuid);
|
||||||
|
|
||||||
|
[DllImportAttribute("powrprof.dll", EntryPoint = "PowerSetActiveOverlayScheme")]
|
||||||
|
public static extern uint PowerSetActiveOverlayScheme(Guid OverlaySchemeGuid);
|
||||||
|
|
||||||
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
|
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
|
||||||
public struct DEVMODE
|
public struct DEVMODE
|
||||||
{
|
{
|
||||||
@@ -545,22 +555,19 @@ public class NativeMethods
|
|||||||
|
|
||||||
foreach (var device in devices)
|
foreach (var device in devices)
|
||||||
{
|
{
|
||||||
if (device.outputTechnology == DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL)
|
if (device.outputTechnology == DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL ||
|
||||||
|
device.outputTechnology == DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED)
|
||||||
{
|
{
|
||||||
displayNum = count;
|
displayNum = count;
|
||||||
}
|
}
|
||||||
count++;
|
count++;
|
||||||
//Debug.WriteLine(device.outputTechnology);
|
//Logger.WriteLine(device.outputTechnology.ToString());
|
||||||
//Debug.WriteLine(device.monitorFriendlyDeviceName);
|
//Logger.WriteLine(device.monitorFriendlyDeviceName);
|
||||||
}
|
}
|
||||||
|
|
||||||
var screens = Screen.AllScreens;
|
var screens = Screen.AllScreens;
|
||||||
|
|
||||||
if (screens.Length != count)
|
if (screens.Length != count) return null;
|
||||||
{
|
|
||||||
Debug.WriteLine("Mismatch between enumerated and available screens");
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
count = 0;
|
count = 0;
|
||||||
foreach (var screen in screens)
|
foreach (var screen in screens)
|
||||||
@@ -569,13 +576,15 @@ public class NativeMethods
|
|||||||
{
|
{
|
||||||
laptopScreen = screen.DeviceName;
|
laptopScreen = screen.DeviceName;
|
||||||
}
|
}
|
||||||
//Debug.WriteLine(screen.DeviceName);
|
//Logger.WriteLine(screen.DeviceName);
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Debug.WriteLine("Can't find internal screen");
|
Logger.WriteLine(ex.ToString());
|
||||||
|
Logger.WriteLine("Can't detect internal screen");
|
||||||
|
//laptopScreen = Screen.PrimaryScreen.DeviceName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -654,6 +663,7 @@ public class NativeMethods
|
|||||||
|
|
||||||
PowerSetActiveScheme(IntPtr.Zero, activeSchemeGuid);
|
PowerSetActiveScheme(IntPtr.Zero, activeSchemeGuid);
|
||||||
|
|
||||||
|
/*
|
||||||
var hrDC = PowerWriteDCValueIndex(
|
var hrDC = PowerWriteDCValueIndex(
|
||||||
IntPtr.Zero,
|
IntPtr.Zero,
|
||||||
activeSchemeGuid,
|
activeSchemeGuid,
|
||||||
@@ -662,7 +672,23 @@ public class NativeMethods
|
|||||||
boost);
|
boost);
|
||||||
|
|
||||||
PowerSetActiveScheme(IntPtr.Zero, activeSchemeGuid);
|
PowerSetActiveScheme(IntPtr.Zero, activeSchemeGuid);
|
||||||
|
*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void SetPowerScheme(int mode)
|
||||||
|
{
|
||||||
|
switch (mode)
|
||||||
|
{
|
||||||
|
case 0: // balanced
|
||||||
|
PowerSetActiveOverlayScheme(new Guid("00000000-0000-0000-0000-000000000000"));
|
||||||
|
break;
|
||||||
|
case 1: // turbo
|
||||||
|
PowerSetActiveOverlayScheme(new Guid("ded574b5-45a0-4f42-8737-46345c09c238"));
|
||||||
|
break;
|
||||||
|
case 2: //silent
|
||||||
|
PowerSetActiveOverlayScheme(new Guid("961cc777-2547-4f9d-8174-7d86181b8a7a"));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
102
Program.cs
102
Program.cs
@@ -6,19 +6,36 @@ using System.Runtime.InteropServices;
|
|||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
public static class Logger
|
public static class Logger
|
||||||
{
|
{
|
||||||
|
static string appPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\GHelper";
|
||||||
|
static string logFile = appPath + "\\log.txt";
|
||||||
|
|
||||||
public static void WriteLine(string logMessage)
|
public static void WriteLine(string logMessage)
|
||||||
{
|
{
|
||||||
var appPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\GHelper";
|
Debug.WriteLine(logMessage);
|
||||||
var logFile = appPath + "\\log.txt";
|
|
||||||
|
|
||||||
if (!Directory.Exists(appPath)) Directory.CreateDirectory(appPath);
|
if (!Directory.Exists(appPath)) Directory.CreateDirectory(appPath);
|
||||||
|
|
||||||
using (StreamWriter w = File.AppendText(logFile))
|
try
|
||||||
{
|
{
|
||||||
Debug.WriteLine(logMessage);
|
using (StreamWriter w = File.AppendText(logFile))
|
||||||
w.WriteLine($"{DateTime.Now}: {logMessage}");
|
{
|
||||||
}
|
w.WriteLine($"{DateTime.Now}: {logMessage}");
|
||||||
|
w.Close();
|
||||||
|
}
|
||||||
|
} catch { }
|
||||||
|
|
||||||
|
if (new Random().Next(100) == 1) Cleanup();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Cleanup()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var file = File.ReadAllLines(logFile);
|
||||||
|
int skip = Math.Max(0, file.Count() - 500);
|
||||||
|
File.WriteAllLines(logFile, file.Skip(skip).ToArray());
|
||||||
|
} catch { }
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -29,31 +46,6 @@ namespace GHelper
|
|||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
// 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
|
public static NotifyIcon trayIcon = new NotifyIcon
|
||||||
{
|
{
|
||||||
Text = "G-Helper",
|
Text = "G-Helper",
|
||||||
@@ -109,20 +101,7 @@ namespace GHelper
|
|||||||
settingsForm.SetStartupCheck(Startup.IsScheduled());
|
settingsForm.SetStartupCheck(Startup.IsScheduled());
|
||||||
|
|
||||||
SetAutoModes();
|
SetAutoModes();
|
||||||
|
HardwareMonitor.RecreateGpuTemperatureProvider();
|
||||||
// Subscribing for native power change events
|
|
||||||
|
|
||||||
/*
|
|
||||||
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);
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Subscribing for monitor power on events
|
// Subscribing for monitor power on events
|
||||||
var settingGuid = new NativeMethods.PowerSettingGuid();
|
var settingGuid = new NativeMethods.PowerSettingGuid();
|
||||||
@@ -131,29 +110,11 @@ namespace GHelper
|
|||||||
// Subscribing for system power change events
|
// Subscribing for system power change events
|
||||||
SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;
|
SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;
|
||||||
|
|
||||||
|
|
||||||
CheckForUpdates();
|
CheckForUpdates();
|
||||||
Application.Run();
|
Application.Run();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int DeviceNotifyCallback(IntPtr context, int type, IntPtr setting)
|
|
||||||
{
|
|
||||||
Logger.WriteLine($"Power callback {type}");
|
|
||||||
switch (type)
|
|
||||||
{
|
|
||||||
case PBT_APMRESUMEAUTOMATIC:
|
|
||||||
settingsForm.BeginInvoke(delegate
|
|
||||||
{
|
|
||||||
SetAutoModes();
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static async void CheckForUpdates()
|
static async void CheckForUpdates()
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -202,18 +163,11 @@ namespace GHelper
|
|||||||
settingsForm.SetBatteryChargeLimit(config.getConfig("charge_limit"));
|
settingsForm.SetBatteryChargeLimit(config.getConfig("charge_limit"));
|
||||||
|
|
||||||
settingsForm.AutoPerformance(isPlugged);
|
settingsForm.AutoPerformance(isPlugged);
|
||||||
settingsForm.AutoGPUMode(isPlugged);
|
|
||||||
|
bool switched = settingsForm.AutoGPUMode(isPlugged);
|
||||||
|
if (!switched) settingsForm.AutoScreen(isPlugged);
|
||||||
|
|
||||||
settingsForm.SetMatrix(isPlugged);
|
settingsForm.SetMatrix(isPlugged);
|
||||||
|
|
||||||
HardwareMonitor.RecreateGpuTemperatureProvider();
|
|
||||||
|
|
||||||
// Re-enabling the discrete GPU takes a bit of time,
|
|
||||||
// so a simple workaround is to refresh again after that happens
|
|
||||||
Task.Run(async () => {
|
|
||||||
await Task.Delay(TimeSpan.FromSeconds(3));
|
|
||||||
HardwareMonitor.RecreateGpuTemperatureProvider();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
|
private static void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
# G-Helper / GHelper for Asus ROG Zephyrus G14, G15, Flow X13, Flow X16, and other models
|
# G-Helper / GHelper
|
||||||
|
|
||||||
|
## Open source Armory Crate alternative for Asus ROG Zephyrus G14, G15, Flow X13, Flow X16, and other models
|
||||||
|
|
||||||
A small utility that allows you do almost everyting you could do with Armory Crate but without extra bloat and unnecessary services.
|
A small utility that allows you do almost everyting you could do with Armory Crate but without extra bloat and unnecessary services.
|
||||||
|
|
||||||
@@ -14,7 +16,7 @@ A small utility that allows you do almost everyting you could do with Armory Cra
|
|||||||
## Main features
|
## Main features
|
||||||
|
|
||||||
1. Switch between built-in system **Performance modes** Silent / Balanced / Turbo and apply default fan curves
|
1. Switch between built-in system **Performance modes** Silent / Balanced / Turbo and apply default fan curves
|
||||||
2. Switch between Eco / Standard or Ultimate **GPU modes**
|
2. Seamless (!) switch between Eco / Standard or Ultimate **GPU modes**
|
||||||
3. Change laptop screen refresh rate - 60hz or your maximum (120hz, 144hz, etc depending on the model) with display overdrive (OD)
|
3. Change laptop screen refresh rate - 60hz or your maximum (120hz, 144hz, etc depending on the model) with display overdrive (OD)
|
||||||
4. View default fan profiles for every mode and **auto apply** custom ones
|
4. View default fan profiles for every mode and **auto apply** custom ones
|
||||||
5. Control keyboard backlit animation and colors
|
5. Control keyboard backlit animation and colors
|
||||||
|
|||||||
54
Settings.Designer.cs
generated
54
Settings.Designer.cs
generated
@@ -112,7 +112,7 @@
|
|||||||
panelMatrix.Controls.Add(pictureMatrix);
|
panelMatrix.Controls.Add(pictureMatrix);
|
||||||
panelMatrix.Controls.Add(labelMatrix);
|
panelMatrix.Controls.Add(labelMatrix);
|
||||||
panelMatrix.Dock = DockStyle.Top;
|
panelMatrix.Dock = DockStyle.Top;
|
||||||
panelMatrix.Location = new Point(16, 814);
|
panelMatrix.Location = new Point(16, 806);
|
||||||
panelMatrix.Margin = new Padding(4);
|
panelMatrix.Margin = new Padding(4);
|
||||||
panelMatrix.Name = "panelMatrix";
|
panelMatrix.Name = "panelMatrix";
|
||||||
panelMatrix.Size = new Size(722, 180);
|
panelMatrix.Size = new Size(722, 180);
|
||||||
@@ -193,7 +193,7 @@
|
|||||||
//
|
//
|
||||||
pictureMatrix.BackgroundImage = Properties.Resources.icons8_matrix_desktop_48;
|
pictureMatrix.BackgroundImage = Properties.Resources.icons8_matrix_desktop_48;
|
||||||
pictureMatrix.BackgroundImageLayout = ImageLayout.Zoom;
|
pictureMatrix.BackgroundImageLayout = ImageLayout.Zoom;
|
||||||
pictureMatrix.Location = new Point(29, 10);
|
pictureMatrix.Location = new Point(25, 10);
|
||||||
pictureMatrix.Margin = new Padding(4, 2, 4, 2);
|
pictureMatrix.Margin = new Padding(4, 2, 4, 2);
|
||||||
pictureMatrix.Name = "pictureMatrix";
|
pictureMatrix.Name = "pictureMatrix";
|
||||||
pictureMatrix.Size = new Size(36, 36);
|
pictureMatrix.Size = new Size(36, 36);
|
||||||
@@ -204,7 +204,7 @@
|
|||||||
//
|
//
|
||||||
labelMatrix.AutoSize = true;
|
labelMatrix.AutoSize = true;
|
||||||
labelMatrix.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
labelMatrix.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
labelMatrix.Location = new Point(68, 12);
|
labelMatrix.Location = new Point(64, 12);
|
||||||
labelMatrix.Margin = new Padding(4, 0, 4, 0);
|
labelMatrix.Margin = new Padding(4, 0, 4, 0);
|
||||||
labelMatrix.Name = "labelMatrix";
|
labelMatrix.Name = "labelMatrix";
|
||||||
labelMatrix.Size = new Size(170, 32);
|
labelMatrix.Size = new Size(170, 32);
|
||||||
@@ -219,7 +219,7 @@
|
|||||||
panelBattery.Controls.Add(labelBatteryTitle);
|
panelBattery.Controls.Add(labelBatteryTitle);
|
||||||
panelBattery.Controls.Add(trackBattery);
|
panelBattery.Controls.Add(trackBattery);
|
||||||
panelBattery.Dock = DockStyle.Top;
|
panelBattery.Dock = DockStyle.Top;
|
||||||
panelBattery.Location = new Point(16, 994);
|
panelBattery.Location = new Point(16, 986);
|
||||||
panelBattery.Margin = new Padding(4);
|
panelBattery.Margin = new Padding(4);
|
||||||
panelBattery.Name = "panelBattery";
|
panelBattery.Name = "panelBattery";
|
||||||
panelBattery.Size = new Size(722, 148);
|
panelBattery.Size = new Size(722, 148);
|
||||||
@@ -252,7 +252,7 @@
|
|||||||
//
|
//
|
||||||
pictureBattery.BackgroundImage = (Image)resources.GetObject("pictureBattery.BackgroundImage");
|
pictureBattery.BackgroundImage = (Image)resources.GetObject("pictureBattery.BackgroundImage");
|
||||||
pictureBattery.BackgroundImageLayout = ImageLayout.Zoom;
|
pictureBattery.BackgroundImageLayout = ImageLayout.Zoom;
|
||||||
pictureBattery.Location = new Point(29, 10);
|
pictureBattery.Location = new Point(25, 10);
|
||||||
pictureBattery.Margin = new Padding(4, 2, 4, 2);
|
pictureBattery.Margin = new Padding(4, 2, 4, 2);
|
||||||
pictureBattery.Name = "pictureBattery";
|
pictureBattery.Name = "pictureBattery";
|
||||||
pictureBattery.Size = new Size(36, 38);
|
pictureBattery.Size = new Size(36, 38);
|
||||||
@@ -262,7 +262,7 @@
|
|||||||
// labelBatteryTitle
|
// labelBatteryTitle
|
||||||
//
|
//
|
||||||
labelBatteryTitle.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
labelBatteryTitle.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
labelBatteryTitle.Location = new Point(70, 12);
|
labelBatteryTitle.Location = new Point(66, 12);
|
||||||
labelBatteryTitle.Margin = new Padding(4, 0, 4, 0);
|
labelBatteryTitle.Margin = new Padding(4, 0, 4, 0);
|
||||||
labelBatteryTitle.Name = "labelBatteryTitle";
|
labelBatteryTitle.Name = "labelBatteryTitle";
|
||||||
labelBatteryTitle.Size = new Size(408, 36);
|
labelBatteryTitle.Size = new Size(408, 36);
|
||||||
@@ -290,7 +290,7 @@
|
|||||||
panelFooter.Controls.Add(buttonQuit);
|
panelFooter.Controls.Add(buttonQuit);
|
||||||
panelFooter.Controls.Add(checkStartup);
|
panelFooter.Controls.Add(checkStartup);
|
||||||
panelFooter.Dock = DockStyle.Top;
|
panelFooter.Dock = DockStyle.Top;
|
||||||
panelFooter.Location = new Point(16, 1142);
|
panelFooter.Location = new Point(16, 1134);
|
||||||
panelFooter.Margin = new Padding(4);
|
panelFooter.Margin = new Padding(4);
|
||||||
panelFooter.Name = "panelFooter";
|
panelFooter.Name = "panelFooter";
|
||||||
panelFooter.Size = new Size(722, 64);
|
panelFooter.Size = new Size(722, 64);
|
||||||
@@ -330,7 +330,7 @@
|
|||||||
panelPerformance.Location = new Point(16, 16);
|
panelPerformance.Location = new Point(16, 16);
|
||||||
panelPerformance.Margin = new Padding(0);
|
panelPerformance.Margin = new Padding(0);
|
||||||
panelPerformance.Name = "panelPerformance";
|
panelPerformance.Name = "panelPerformance";
|
||||||
panelPerformance.Size = new Size(722, 228);
|
panelPerformance.Size = new Size(722, 220);
|
||||||
panelPerformance.TabIndex = 36;
|
panelPerformance.TabIndex = 36;
|
||||||
//
|
//
|
||||||
// buttonFans
|
// buttonFans
|
||||||
@@ -351,7 +351,7 @@
|
|||||||
picturePerf.BackgroundImage = (Image)resources.GetObject("picturePerf.BackgroundImage");
|
picturePerf.BackgroundImage = (Image)resources.GetObject("picturePerf.BackgroundImage");
|
||||||
picturePerf.BackgroundImageLayout = ImageLayout.Zoom;
|
picturePerf.BackgroundImageLayout = ImageLayout.Zoom;
|
||||||
picturePerf.InitialImage = null;
|
picturePerf.InitialImage = null;
|
||||||
picturePerf.Location = new Point(29, 10);
|
picturePerf.Location = new Point(25, 10);
|
||||||
picturePerf.Margin = new Padding(4, 2, 4, 2);
|
picturePerf.Margin = new Padding(4, 2, 4, 2);
|
||||||
picturePerf.Name = "picturePerf";
|
picturePerf.Name = "picturePerf";
|
||||||
picturePerf.Size = new Size(36, 38);
|
picturePerf.Size = new Size(36, 38);
|
||||||
@@ -362,7 +362,7 @@
|
|||||||
//
|
//
|
||||||
labelPerf.AutoSize = true;
|
labelPerf.AutoSize = true;
|
||||||
labelPerf.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
labelPerf.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
labelPerf.Location = new Point(68, 12);
|
labelPerf.Location = new Point(64, 12);
|
||||||
labelPerf.Margin = new Padding(4, 0, 4, 0);
|
labelPerf.Margin = new Padding(4, 0, 4, 0);
|
||||||
labelPerf.Name = "labelPerf";
|
labelPerf.Name = "labelPerf";
|
||||||
labelPerf.Size = new Size(234, 32);
|
labelPerf.Size = new Size(234, 32);
|
||||||
@@ -383,6 +383,8 @@
|
|||||||
// tablePerf
|
// tablePerf
|
||||||
//
|
//
|
||||||
tablePerf.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
tablePerf.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||||
|
tablePerf.AutoScroll = true;
|
||||||
|
tablePerf.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||||
tablePerf.ColumnCount = 3;
|
tablePerf.ColumnCount = 3;
|
||||||
tablePerf.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F));
|
tablePerf.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F));
|
||||||
tablePerf.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F));
|
tablePerf.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F));
|
||||||
@@ -452,7 +454,7 @@
|
|||||||
panelGPU.Controls.Add(labelGPUFan);
|
panelGPU.Controls.Add(labelGPUFan);
|
||||||
panelGPU.Controls.Add(tableGPU);
|
panelGPU.Controls.Add(tableGPU);
|
||||||
panelGPU.Dock = DockStyle.Top;
|
panelGPU.Dock = DockStyle.Top;
|
||||||
panelGPU.Location = new Point(16, 244);
|
panelGPU.Location = new Point(16, 236);
|
||||||
panelGPU.Margin = new Padding(4);
|
panelGPU.Margin = new Padding(4);
|
||||||
panelGPU.Name = "panelGPU";
|
panelGPU.Name = "panelGPU";
|
||||||
panelGPU.Size = new Size(722, 216);
|
panelGPU.Size = new Size(722, 216);
|
||||||
@@ -462,7 +464,7 @@
|
|||||||
//
|
//
|
||||||
checkGPU.AutoSize = true;
|
checkGPU.AutoSize = true;
|
||||||
checkGPU.ForeColor = SystemColors.GrayText;
|
checkGPU.ForeColor = SystemColors.GrayText;
|
||||||
checkGPU.Location = new Point(27, 154);
|
checkGPU.Location = new Point(27, 155);
|
||||||
checkGPU.Margin = new Padding(4, 2, 4, 2);
|
checkGPU.Margin = new Padding(4, 2, 4, 2);
|
||||||
checkGPU.Name = "checkGPU";
|
checkGPU.Name = "checkGPU";
|
||||||
checkGPU.Size = new Size(550, 36);
|
checkGPU.Size = new Size(550, 36);
|
||||||
@@ -474,7 +476,7 @@
|
|||||||
//
|
//
|
||||||
pictureGPU.BackgroundImage = (Image)resources.GetObject("pictureGPU.BackgroundImage");
|
pictureGPU.BackgroundImage = (Image)resources.GetObject("pictureGPU.BackgroundImage");
|
||||||
pictureGPU.BackgroundImageLayout = ImageLayout.Zoom;
|
pictureGPU.BackgroundImageLayout = ImageLayout.Zoom;
|
||||||
pictureGPU.Location = new Point(29, 10);
|
pictureGPU.Location = new Point(25, 10);
|
||||||
pictureGPU.Margin = new Padding(4, 2, 4, 2);
|
pictureGPU.Margin = new Padding(4, 2, 4, 2);
|
||||||
pictureGPU.Name = "pictureGPU";
|
pictureGPU.Name = "pictureGPU";
|
||||||
pictureGPU.Size = new Size(36, 38);
|
pictureGPU.Size = new Size(36, 38);
|
||||||
@@ -485,7 +487,7 @@
|
|||||||
//
|
//
|
||||||
labelGPU.AutoSize = true;
|
labelGPU.AutoSize = true;
|
||||||
labelGPU.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
labelGPU.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
labelGPU.Location = new Point(70, 12);
|
labelGPU.Location = new Point(66, 12);
|
||||||
labelGPU.Margin = new Padding(4, 0, 4, 0);
|
labelGPU.Margin = new Padding(4, 0, 4, 0);
|
||||||
labelGPU.Name = "labelGPU";
|
labelGPU.Name = "labelGPU";
|
||||||
labelGPU.Size = new Size(136, 32);
|
labelGPU.Size = new Size(136, 32);
|
||||||
@@ -506,6 +508,8 @@
|
|||||||
// tableGPU
|
// tableGPU
|
||||||
//
|
//
|
||||||
tableGPU.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
tableGPU.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||||
|
tableGPU.AutoSize = true;
|
||||||
|
tableGPU.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||||
tableGPU.ColumnCount = 3;
|
tableGPU.ColumnCount = 3;
|
||||||
tableGPU.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F));
|
tableGPU.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F));
|
||||||
tableGPU.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F));
|
tableGPU.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F));
|
||||||
@@ -571,7 +575,7 @@
|
|||||||
panelScreen.Controls.Add(pictureScreen);
|
panelScreen.Controls.Add(pictureScreen);
|
||||||
panelScreen.Controls.Add(labelSreen);
|
panelScreen.Controls.Add(labelSreen);
|
||||||
panelScreen.Dock = DockStyle.Top;
|
panelScreen.Dock = DockStyle.Top;
|
||||||
panelScreen.Location = new Point(16, 460);
|
panelScreen.Location = new Point(16, 452);
|
||||||
panelScreen.Margin = new Padding(4);
|
panelScreen.Margin = new Padding(4);
|
||||||
panelScreen.Name = "panelScreen";
|
panelScreen.Name = "panelScreen";
|
||||||
panelScreen.Size = new Size(722, 200);
|
panelScreen.Size = new Size(722, 200);
|
||||||
@@ -581,7 +585,7 @@
|
|||||||
//
|
//
|
||||||
checkScreen.AutoSize = true;
|
checkScreen.AutoSize = true;
|
||||||
checkScreen.ForeColor = SystemColors.GrayText;
|
checkScreen.ForeColor = SystemColors.GrayText;
|
||||||
checkScreen.Location = new Point(27, 153);
|
checkScreen.Location = new Point(27, 154);
|
||||||
checkScreen.Margin = new Padding(4, 2, 4, 2);
|
checkScreen.Margin = new Padding(4, 2, 4, 2);
|
||||||
checkScreen.Name = "checkScreen";
|
checkScreen.Name = "checkScreen";
|
||||||
checkScreen.Size = new Size(527, 36);
|
checkScreen.Size = new Size(527, 36);
|
||||||
@@ -592,6 +596,8 @@
|
|||||||
// tableScreen
|
// tableScreen
|
||||||
//
|
//
|
||||||
tableScreen.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
tableScreen.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||||
|
tableScreen.AutoSize = true;
|
||||||
|
tableScreen.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||||
tableScreen.ColumnCount = 3;
|
tableScreen.ColumnCount = 3;
|
||||||
tableScreen.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F));
|
tableScreen.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F));
|
||||||
tableScreen.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F));
|
tableScreen.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F));
|
||||||
@@ -642,7 +648,7 @@
|
|||||||
//
|
//
|
||||||
pictureScreen.BackgroundImage = (Image)resources.GetObject("pictureScreen.BackgroundImage");
|
pictureScreen.BackgroundImage = (Image)resources.GetObject("pictureScreen.BackgroundImage");
|
||||||
pictureScreen.BackgroundImageLayout = ImageLayout.Zoom;
|
pictureScreen.BackgroundImageLayout = ImageLayout.Zoom;
|
||||||
pictureScreen.Location = new Point(29, 8);
|
pictureScreen.Location = new Point(25, 8);
|
||||||
pictureScreen.Margin = new Padding(4, 2, 4, 2);
|
pictureScreen.Margin = new Padding(4, 2, 4, 2);
|
||||||
pictureScreen.Name = "pictureScreen";
|
pictureScreen.Name = "pictureScreen";
|
||||||
pictureScreen.Size = new Size(36, 38);
|
pictureScreen.Size = new Size(36, 38);
|
||||||
@@ -653,7 +659,7 @@
|
|||||||
//
|
//
|
||||||
labelSreen.AutoSize = true;
|
labelSreen.AutoSize = true;
|
||||||
labelSreen.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
labelSreen.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
labelSreen.Location = new Point(72, 10);
|
labelSreen.Location = new Point(68, 10);
|
||||||
labelSreen.Margin = new Padding(4, 0, 4, 0);
|
labelSreen.Margin = new Padding(4, 0, 4, 0);
|
||||||
labelSreen.Name = "labelSreen";
|
labelSreen.Name = "labelSreen";
|
||||||
labelSreen.Size = new Size(176, 32);
|
labelSreen.Size = new Size(176, 32);
|
||||||
@@ -666,7 +672,7 @@
|
|||||||
panelKeyboard.Controls.Add(pictureKeyboard);
|
panelKeyboard.Controls.Add(pictureKeyboard);
|
||||||
panelKeyboard.Controls.Add(label1);
|
panelKeyboard.Controls.Add(label1);
|
||||||
panelKeyboard.Dock = DockStyle.Top;
|
panelKeyboard.Dock = DockStyle.Top;
|
||||||
panelKeyboard.Location = new Point(16, 660);
|
panelKeyboard.Location = new Point(16, 652);
|
||||||
panelKeyboard.Margin = new Padding(4);
|
panelKeyboard.Margin = new Padding(4);
|
||||||
panelKeyboard.Name = "panelKeyboard";
|
panelKeyboard.Name = "panelKeyboard";
|
||||||
panelKeyboard.Size = new Size(722, 154);
|
panelKeyboard.Size = new Size(722, 154);
|
||||||
@@ -687,7 +693,7 @@
|
|||||||
tableLayoutKeyboard.Name = "tableLayoutKeyboard";
|
tableLayoutKeyboard.Name = "tableLayoutKeyboard";
|
||||||
tableLayoutKeyboard.RowCount = 1;
|
tableLayoutKeyboard.RowCount = 1;
|
||||||
tableLayoutKeyboard.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
|
tableLayoutKeyboard.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
|
||||||
tableLayoutKeyboard.Size = new Size(684, 62);
|
tableLayoutKeyboard.Size = new Size(684, 66);
|
||||||
tableLayoutKeyboard.TabIndex = 39;
|
tableLayoutKeyboard.TabIndex = 39;
|
||||||
//
|
//
|
||||||
// buttonKeyboard
|
// buttonKeyboard
|
||||||
@@ -726,7 +732,7 @@
|
|||||||
panelColor.Location = new Point(238, 10);
|
panelColor.Location = new Point(238, 10);
|
||||||
panelColor.Margin = new Padding(10);
|
panelColor.Margin = new Padding(10);
|
||||||
panelColor.Name = "panelColor";
|
panelColor.Name = "panelColor";
|
||||||
panelColor.Size = new Size(208, 42);
|
panelColor.Size = new Size(208, 46);
|
||||||
panelColor.TabIndex = 36;
|
panelColor.TabIndex = 36;
|
||||||
//
|
//
|
||||||
// pictureColor2
|
// pictureColor2
|
||||||
@@ -768,7 +774,7 @@
|
|||||||
//
|
//
|
||||||
pictureKeyboard.BackgroundImage = Properties.Resources.icons8_keyboard_48;
|
pictureKeyboard.BackgroundImage = Properties.Resources.icons8_keyboard_48;
|
||||||
pictureKeyboard.BackgroundImageLayout = ImageLayout.Zoom;
|
pictureKeyboard.BackgroundImageLayout = ImageLayout.Zoom;
|
||||||
pictureKeyboard.Location = new Point(29, 16);
|
pictureKeyboard.Location = new Point(25, 16);
|
||||||
pictureKeyboard.Margin = new Padding(4, 2, 4, 2);
|
pictureKeyboard.Margin = new Padding(4, 2, 4, 2);
|
||||||
pictureKeyboard.Name = "pictureKeyboard";
|
pictureKeyboard.Name = "pictureKeyboard";
|
||||||
pictureKeyboard.Size = new Size(36, 36);
|
pictureKeyboard.Size = new Size(36, 36);
|
||||||
@@ -779,7 +785,7 @@
|
|||||||
//
|
//
|
||||||
label1.AutoSize = true;
|
label1.AutoSize = true;
|
||||||
label1.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
label1.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
label1.Location = new Point(72, 16);
|
label1.Location = new Point(68, 16);
|
||||||
label1.Margin = new Padding(4, 0, 4, 0);
|
label1.Margin = new Padding(4, 0, 4, 0);
|
||||||
label1.Name = "label1";
|
label1.Name = "label1";
|
||||||
label1.Size = new Size(210, 32);
|
label1.Size = new Size(210, 32);
|
||||||
@@ -792,7 +798,7 @@
|
|||||||
AutoScaleMode = AutoScaleMode.Dpi;
|
AutoScaleMode = AutoScaleMode.Dpi;
|
||||||
AutoSize = true;
|
AutoSize = true;
|
||||||
AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||||
ClientSize = new Size(754, 1180);
|
ClientSize = new Size(754, 1217);
|
||||||
Controls.Add(panelFooter);
|
Controls.Add(panelFooter);
|
||||||
Controls.Add(panelBattery);
|
Controls.Add(panelBattery);
|
||||||
Controls.Add(panelMatrix);
|
Controls.Add(panelMatrix);
|
||||||
|
|||||||
43
Settings.cs
43
Settings.cs
@@ -562,7 +562,7 @@ namespace GHelper
|
|||||||
Program.wmi.DeviceSet(ASUSWmi.ScreenOverdrive, overdrive);
|
Program.wmi.DeviceSet(ASUSWmi.ScreenOverdrive, overdrive);
|
||||||
|
|
||||||
InitScreen();
|
InitScreen();
|
||||||
Logger.WriteLine("Screen "+ frequency.ToString() + "Hz");
|
Logger.WriteLine("Screen " + frequency.ToString() + "Hz");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -690,7 +690,8 @@ namespace GHelper
|
|||||||
if (HardwareMonitor.batteryDischarge > 0)
|
if (HardwareMonitor.batteryDischarge > 0)
|
||||||
battery = "Discharging: " + Math.Round((decimal)HardwareMonitor.batteryDischarge, 1).ToString() + "W";
|
battery = "Discharging: " + Math.Round((decimal)HardwareMonitor.batteryDischarge, 1).ToString() + "W";
|
||||||
|
|
||||||
if (HardwareMonitor.gpuTemp != null) {
|
if (HardwareMonitor.gpuTemp != null)
|
||||||
|
{
|
||||||
gpuTemp = $": {HardwareMonitor.gpuTemp}°C - ";
|
gpuTemp = $": {HardwareMonitor.gpuTemp}°C - ";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -740,11 +741,13 @@ namespace GHelper
|
|||||||
if (limit_cpu > ASUSWmi.MaxCPU) return;
|
if (limit_cpu > ASUSWmi.MaxCPU) return;
|
||||||
if (limit_cpu < ASUSWmi.MinCPU) return;
|
if (limit_cpu < ASUSWmi.MinCPU) return;
|
||||||
|
|
||||||
Program.wmi.DeviceSet(ASUSWmi.PPT_TotalA0, limit_total);
|
if (Program.wmi.DeviceGet(ASUSWmi.PPT_TotalA0) >= 0)
|
||||||
Program.wmi.DeviceSet(ASUSWmi.PPT_TotalA1, limit_total);
|
Program.wmi.DeviceSet(ASUSWmi.PPT_TotalA0, limit_total);
|
||||||
Program.wmi.DeviceSet(ASUSWmi.PPT_CPUB0, limit_cpu);
|
|
||||||
|
|
||||||
Logger.WriteLine("PowerLimits "+limit_total.ToString() + ", " + limit_cpu.ToString());
|
if (Program.wmi.DeviceGet(ASUSWmi.PPT_CPUB0) >= 0)
|
||||||
|
Program.wmi.DeviceSet(ASUSWmi.PPT_CPUB0, limit_cpu);
|
||||||
|
|
||||||
|
Logger.WriteLine("PowerLimits " + limit_total.ToString() + ", " + limit_cpu.ToString());
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -802,7 +805,7 @@ namespace GHelper
|
|||||||
Program.config.setConfig("performance_mode", PerformanceMode);
|
Program.config.setConfig("performance_mode", PerformanceMode);
|
||||||
|
|
||||||
Program.wmi.DeviceSet(ASUSWmi.PerformanceMode, PerformanceMode);
|
Program.wmi.DeviceSet(ASUSWmi.PerformanceMode, PerformanceMode);
|
||||||
Logger.WriteLine("PerfMode " + perfName + " "+ PerformanceMode);
|
Logger.WriteLine("PerfMode " + perfName + " " + PerformanceMode);
|
||||||
|
|
||||||
if (notify && (oldMode != PerformanceMode))
|
if (notify && (oldMode != PerformanceMode))
|
||||||
{
|
{
|
||||||
@@ -818,6 +821,13 @@ namespace GHelper
|
|||||||
|
|
||||||
AutoFansAndPower();
|
AutoFansAndPower();
|
||||||
|
|
||||||
|
NativeMethods.SetPowerScheme(PerformanceMode);
|
||||||
|
|
||||||
|
if (NativeMethods.PowerGetEffectiveOverlayScheme(out Guid activeScheme) == 0)
|
||||||
|
{
|
||||||
|
Debug.WriteLine("Effective :" + activeScheme);
|
||||||
|
}
|
||||||
|
|
||||||
if (fans != null && fans.Text != "")
|
if (fans != null && fans.Text != "")
|
||||||
{
|
{
|
||||||
fans.InitFans();
|
fans.InitFans();
|
||||||
@@ -857,33 +867,33 @@ namespace GHelper
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AutoGPUMode(PowerLineStatus Plugged = PowerLineStatus.Online)
|
public bool AutoGPUMode(PowerLineStatus Plugged = PowerLineStatus.Online)
|
||||||
{
|
{
|
||||||
|
|
||||||
int GpuAuto = Program.config.getConfig("gpu_auto");
|
int GpuAuto = Program.config.getConfig("gpu_auto");
|
||||||
if (GpuAuto != 1) return;
|
if (GpuAuto != 1) return false;
|
||||||
|
|
||||||
int eco = Program.wmi.DeviceGet(ASUSWmi.GPUEco);
|
int eco = Program.wmi.DeviceGet(ASUSWmi.GPUEco);
|
||||||
int mux = Program.wmi.DeviceGet(ASUSWmi.GPUMux);
|
int mux = Program.wmi.DeviceGet(ASUSWmi.GPUMux);
|
||||||
|
|
||||||
if (mux == 0) // GPU in Ultimate, ignore
|
if (mux == 0) // GPU in Ultimate, ignore
|
||||||
return;
|
return false;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (eco == 1 && Plugged == PowerLineStatus.Online) // Eco going Standard on plugged
|
if (eco == 1 && Plugged == PowerLineStatus.Online) // Eco going Standard on plugged
|
||||||
{
|
{
|
||||||
SetEcoGPU(0);
|
SetEcoGPU(0);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
else if (eco == 0 && Plugged != PowerLineStatus.Online) // Standard going Eco on plugged
|
else if (eco == 0 && Plugged != PowerLineStatus.Online) // Standard going Eco on plugged
|
||||||
{
|
{
|
||||||
SetEcoGPU(1);
|
SetEcoGPU(1);
|
||||||
}
|
return true;
|
||||||
else
|
|
||||||
{
|
|
||||||
AutoScreen(Plugged);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int InitGPUMode()
|
public int InitGPUMode()
|
||||||
@@ -934,6 +944,7 @@ namespace GHelper
|
|||||||
Program.settingsForm.BeginInvoke(delegate
|
Program.settingsForm.BeginInvoke(delegate
|
||||||
{
|
{
|
||||||
InitGPUMode();
|
InitGPUMode();
|
||||||
|
HardwareMonitor.RecreateGpuTemperatureProviderWithRetry();
|
||||||
Thread.Sleep(500);
|
Thread.Sleep(500);
|
||||||
AutoScreen(SystemInformation.PowerStatus.PowerLineStatus);
|
AutoScreen(SystemInformation.PowerStatus.PowerLineStatus);
|
||||||
});
|
});
|
||||||
@@ -987,8 +998,12 @@ namespace GHelper
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (changed)
|
if (changed)
|
||||||
|
{
|
||||||
Program.config.setConfig("gpu_mode", GPUMode);
|
Program.config.setConfig("gpu_mode", GPUMode);
|
||||||
|
|
||||||
|
HardwareMonitor.RecreateGpuTemperatureProviderWithRetry();
|
||||||
|
}
|
||||||
|
|
||||||
if (restart)
|
if (restart)
|
||||||
{
|
{
|
||||||
VisualiseGPUMode(GPUMode);
|
VisualiseGPUMode(GPUMode);
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
<windowsSettings>
|
<windowsSettings>
|
||||||
<!--<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitor/dpiAwareness>-->
|
<!--<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitor/dpiAwareness>-->
|
||||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
||||||
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2, PerMonitor, System</dpiAwareness>
|
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">System</dpiAwareness>
|
||||||
</windowsSettings>
|
</windowsSettings>
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
|
|||||||
BIN
screenshot.png
BIN
screenshot.png
Binary file not shown.
|
Before Width: | Height: | Size: 2.4 MiB After Width: | Height: | Size: 3.4 MiB |
Reference in New Issue
Block a user