mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
306697f026 | ||
|
|
c5a32cc9d5 | ||
|
|
51acd9a612 | ||
|
|
457a37049c |
52
Fans.Designer.cs
generated
52
Fans.Designer.cs
generated
@@ -28,9 +28,10 @@
|
||||
/// </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();
|
||||
labelFans = new Label();
|
||||
checkAuto = new CheckBox();
|
||||
chartGPU = new System.Windows.Forms.DataVisualization.Charting.Chart();
|
||||
buttonReset = new Button();
|
||||
@@ -51,6 +52,7 @@
|
||||
labelApplied = new Label();
|
||||
pictureFine = new PictureBox();
|
||||
labelInfo = new Label();
|
||||
checkBoost = new CheckBox();
|
||||
panelFans.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)chartGPU).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)chartCPU).BeginInit();
|
||||
@@ -64,6 +66,8 @@
|
||||
//
|
||||
// panelFans
|
||||
//
|
||||
panelFans.Controls.Add(checkBoost);
|
||||
panelFans.Controls.Add(labelFans);
|
||||
panelFans.Controls.Add(checkAuto);
|
||||
panelFans.Controls.Add(chartGPU);
|
||||
panelFans.Controls.Add(buttonReset);
|
||||
@@ -78,11 +82,21 @@
|
||||
panelFans.Size = new Size(872, 1089);
|
||||
panelFans.TabIndex = 12;
|
||||
//
|
||||
// labelFans
|
||||
//
|
||||
labelFans.AutoSize = true;
|
||||
labelFans.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
labelFans.Location = new Point(24, 15);
|
||||
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(411, 1030);
|
||||
checkAuto.Margin = new Padding(4, 2, 4, 2);
|
||||
checkAuto.Name = "checkAuto";
|
||||
checkAuto.Size = new Size(165, 36);
|
||||
@@ -93,9 +107,9 @@
|
||||
// chartGPU
|
||||
//
|
||||
chartGPU.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
chartArea5.Name = "ChartArea1";
|
||||
chartGPU.ChartAreas.Add(chartArea5);
|
||||
chartGPU.Location = new Point(22, 502);
|
||||
chartArea3.Name = "ChartArea1";
|
||||
chartGPU.ChartAreas.Add(chartArea3);
|
||||
chartGPU.Location = new Point(22, 547);
|
||||
chartGPU.Margin = new Padding(4, 2, 4, 2);
|
||||
chartGPU.Name = "chartGPU";
|
||||
chartGPU.Size = new Size(810, 460);
|
||||
@@ -127,9 +141,9 @@
|
||||
// chartCPU
|
||||
//
|
||||
chartCPU.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
chartArea6.Name = "ChartArea1";
|
||||
chartCPU.ChartAreas.Add(chartArea6);
|
||||
chartCPU.Location = new Point(22, 21);
|
||||
chartArea4.Name = "ChartArea1";
|
||||
chartCPU.ChartAreas.Add(chartArea4);
|
||||
chartCPU.Location = new Point(22, 66);
|
||||
chartCPU.Margin = new Padding(10);
|
||||
chartCPU.Name = "chartCPU";
|
||||
chartCPU.Size = new Size(810, 460);
|
||||
@@ -166,7 +180,7 @@
|
||||
//
|
||||
checkApplyPower.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
||||
checkApplyPower.AutoSize = true;
|
||||
checkApplyPower.Location = new Point(17, 981);
|
||||
checkApplyPower.Location = new Point(21, 982);
|
||||
checkApplyPower.Margin = new Padding(4, 2, 4, 2);
|
||||
checkApplyPower.Name = "checkApplyPower";
|
||||
checkApplyPower.Size = new Size(165, 36);
|
||||
@@ -294,7 +308,7 @@
|
||||
pictureFine.Anchor = AnchorStyles.Bottom | 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(17, 671);
|
||||
pictureFine.Margin = new Padding(4, 2, 4, 2);
|
||||
pictureFine.Name = "pictureFine";
|
||||
pictureFine.Size = new Size(327, 254);
|
||||
@@ -308,10 +322,22 @@
|
||||
labelInfo.Location = new Point(17, 603);
|
||||
labelInfo.Margin = new Padding(4, 0, 4, 0);
|
||||
labelInfo.Name = "labelInfo";
|
||||
labelInfo.Size = new Size(327, 371);
|
||||
labelInfo.Size = new Size(327, 330);
|
||||
labelInfo.TabIndex = 19;
|
||||
labelInfo.Text = "label";
|
||||
//
|
||||
// checkBoost
|
||||
//
|
||||
checkBoost.AutoSize = true;
|
||||
checkBoost.ForeColor = SystemColors.ControlText;
|
||||
checkBoost.Location = new Point(512, 15);
|
||||
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;
|
||||
//
|
||||
// Fans
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(192F, 192F);
|
||||
@@ -369,5 +395,7 @@
|
||||
private PictureBox pictureFine;
|
||||
private Label labelInfo;
|
||||
private Label labelPowerLimits;
|
||||
private Label labelFans;
|
||||
private CheckBox checkBoost;
|
||||
}
|
||||
}
|
||||
24
Fans.cs
24
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;
|
||||
@@ -102,11 +102,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,7 +15,7 @@
|
||||
<AssemblyName>GHelper</AssemblyName>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
||||
<AssemblyVersion>0.18.1</AssemblyVersion>
|
||||
<AssemblyVersion>0.20</AssemblyVersion>
|
||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
|
||||
|
||||
@@ -310,6 +310,7 @@ namespace Tools
|
||||
public class NativeMethods
|
||||
{
|
||||
|
||||
|
||||
public const int KEYEVENTF_EXTENDEDKEY = 1;
|
||||
public const int KEYEVENTF_KEYUP = 2;
|
||||
|
||||
|
||||
60
Program.cs
60
Program.cs
@@ -1,6 +1,7 @@
|
||||
using Microsoft.Win32;
|
||||
using System.Diagnostics;
|
||||
using System.Management;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
public class HardwareMonitor
|
||||
{
|
||||
@@ -36,6 +37,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",
|
||||
@@ -75,7 +102,6 @@ namespace GHelper
|
||||
wmi.SubscribeToEvents(WatcherEventArrived);
|
||||
|
||||
settingsForm.InitGPUMode();
|
||||
settingsForm.InitBoost();
|
||||
settingsForm.InitAura();
|
||||
settingsForm.InitMatrix();
|
||||
|
||||
@@ -85,6 +111,16 @@ 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;
|
||||
@@ -93,6 +129,28 @@ namespace GHelper
|
||||
|
||||
}
|
||||
|
||||
|
||||
private static int DeviceNotifyCallback(IntPtr context, int type, IntPtr setting)
|
||||
{
|
||||
//Debug.WriteLine($"Power callback type: {type}");
|
||||
switch (type)
|
||||
{
|
||||
case PBT_APMRESUMEAUTOMATIC:
|
||||
settingsForm.BeginInvoke(delegate
|
||||
{
|
||||
// Setting "other" mode to prevent bios bugging with PPTs after wake up from sleep
|
||||
int PerformanceMode = (config.getConfig("performance_mode") + 1) % 3;
|
||||
wmi.DeviceSet(ASUSWmi.PerformanceMode, PerformanceMode);
|
||||
Thread.Sleep(1000);
|
||||
|
||||
SetAutoModes();
|
||||
});
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
private static void SetAutoModes()
|
||||
{
|
||||
PowerLineStatus isPlugged = SystemInformation.PowerStatus.PowerLineStatus;
|
||||
|
||||
15
Settings.Designer.cs
generated
15
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();
|
||||
@@ -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");
|
||||
@@ -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;
|
||||
|
||||
79
Settings.cs
79
Settings.cs
@@ -61,7 +61,6 @@ namespace GHelper
|
||||
|
||||
buttonQuit.Click += ButtonQuit_Click;
|
||||
|
||||
checkBoost.Click += CheckBoost_Click;
|
||||
|
||||
checkScreen.CheckedChanged += checkScreen_CheckedChanged;
|
||||
|
||||
@@ -93,11 +92,26 @@ namespace GHelper
|
||||
|
||||
buttonMatrix.Click += ButtonMatrix_Click;
|
||||
|
||||
checkStartup.CheckedChanged += CheckStartup_CheckedChanged;
|
||||
|
||||
SetTimer();
|
||||
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
@@ -468,19 +482,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);
|
||||
@@ -523,13 +524,6 @@ namespace GHelper
|
||||
InitScreen();
|
||||
}
|
||||
|
||||
|
||||
public void InitBoost()
|
||||
{
|
||||
int boost = NativeMethods.GetCPUBoost();
|
||||
checkBoost.Checked = (boost > 0);
|
||||
}
|
||||
|
||||
public void InitScreen()
|
||||
{
|
||||
|
||||
@@ -702,12 +696,28 @@ 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)
|
||||
{
|
||||
SetPower();
|
||||
}
|
||||
}
|
||||
|
||||
public void SetPerformanceMode(int PerformanceMode = ASUSWmi.PerformanceBalanced, bool notify = false)
|
||||
{
|
||||
|
||||
@@ -738,16 +748,7 @@ namespace GHelper
|
||||
|
||||
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();
|
||||
}
|
||||
AutoFansAndPower();
|
||||
|
||||
if (fans != null && fans.Text != "")
|
||||
{
|
||||
@@ -755,6 +756,8 @@ namespace GHelper
|
||||
fans.InitPower();
|
||||
}
|
||||
|
||||
Debug.WriteLine("Perf:" + PerformanceMode);
|
||||
|
||||
if (notify && (oldMode != PerformanceMode))
|
||||
{
|
||||
try
|
||||
@@ -985,18 +988,6 @@ namespace GHelper
|
||||
{
|
||||
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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user