Custom fan profiles with editor

This commit is contained in:
seerge
2023-02-23 00:25:41 +01:00
parent 146150b1e7
commit 44c3d9f3c7
12 changed files with 1255 additions and 835 deletions

View File

@@ -1,5 +1,6 @@
using System.Management; using System.Management;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Diagnostics;
public class ASUSWmi public class ASUSWmi
{ {
@@ -115,7 +116,7 @@ public class ASUSWmi
BitConverter.GetBytes((uint)args.Length).CopyTo(acpiBuf, 4); BitConverter.GetBytes((uint)args.Length).CopyTo(acpiBuf, 4);
Array.Copy(args, 0, acpiBuf, 8, args.Length); Array.Copy(args, 0, acpiBuf, 8, args.Length);
Console.WriteLine(BitConverter.ToString(acpiBuf, 0, acpiBuf.Length)); //Debug.WriteLine(BitConverter.ToString(acpiBuf, 0, acpiBuf.Length));
Control(CONTROL_CODE, acpiBuf, outBuffer); Control(CONTROL_CODE, acpiBuf, outBuffer);
@@ -149,7 +150,7 @@ public class ASUSWmi
return BitConverter.ToInt32(status, 0) - 65536; return BitConverter.ToInt32(status, 0) - 65536;
} }
public byte[] DeviceGetBuffer(uint DeviceID, int Status = 0) public byte[] DeviceGetBuffer(uint DeviceID, uint Status = 0)
{ {
byte[] args = new byte[8]; byte[] args = new byte[8];
BitConverter.GetBytes((uint)DeviceID).CopyTo(args, 0); BitConverter.GetBytes((uint)DeviceID).CopyTo(args, 0);
@@ -158,17 +159,31 @@ public class ASUSWmi
} }
public void SetFanCurve(byte[] curve) public void SetFanCurve(int device, byte[] curve)
{ {
DeviceSet(DevsCPUFanCurve, curve); if (device == 1)
DeviceSet(DevsGPUFanCurve, curve);
else
DeviceSet(DevsCPUFanCurve, curve);
} }
public byte[] GetFanCurve(int mode = 0) public byte[] GetFanCurve(int device, int mode = 0)
{ {
if (mode == 1) mode = 2; uint fan_mode;
if (mode == 2) mode = 1; // because it's asus, and modes are swapped here
// because it's asus, and modes are swapped here
switch (mode)
{
case 1:fan_mode = 2; break;
case 2: fan_mode = 1; break;
default: fan_mode = 0; break;
}
if (device == 1)
return DeviceGetBuffer(DevsGPUFanCurve, fan_mode);
else
return DeviceGetBuffer(DevsCPUFanCurve, fan_mode);
return DeviceGetBuffer(DevsCPUFanCurve, mode);
} }

68
Aura.cs Normal file
View File

@@ -0,0 +1,68 @@
using HidLibrary;
public class Aura
{
static byte[] MESSAGE_SET = { 0x5d, 0xb5 };
static byte[] MESSAGE_APPLY = { 0x5d, 0xb4 };
public const int Static = 0;
public const int Breathe = 1;
public const int Strobe = 2;
public const int Rainbow = 3;
public const int Dingding = 10;
public const int SpeedSlow = 0;
public const int SpeedMedium = 1;
public const int SpeedHigh = 2;
public static int Mode = Static;
public static Color Color1 = Color.White;
public static Color Color2 = Color.Black;
public static int Speed = SpeedSlow;
public static byte[] AuraMessage(int mode, Color color, Color color2, int speed)
{
byte[] msg = new byte[17];
msg[0] = 0x5d;
msg[1] = 0xb3;
msg[2] = 0x00; // Zone
msg[3] = (byte)mode; // Aura Mode
msg[4] = (byte)(color.R); // R
msg[5] = (byte)(color.G); // G
msg[6] = (byte)(color.B); // B
msg[7] = (byte)speed; // aura.speed as u8;
msg[8] = 0; // aura.direction as u8;
msg[10] = (byte)(color2.R); // R
msg[11] = (byte)(color2.G); // G
msg[12] = (byte)(color2.B); // B
return msg;
}
public static void ApplyAura()
{
HidDevice[] HidDeviceList;
int[] deviceIds = { 0x1854, 0x1869, 0x1866, 0x19b6 };
HidDeviceList = HidDevices.Enumerate(0x0b05, deviceIds).ToArray();
foreach (HidDevice device in HidDeviceList)
{
if (device.IsConnected)
{
if (device.Description.IndexOf("HID") >= 0)
{
device.OpenDevice();
byte[] msg = AuraMessage(Mode, Color1, Color2, Speed);
device.Write(msg);
device.Write(MESSAGE_SET);
device.Write(MESSAGE_APPLY);
device.CloseDevice();
}
}
}
}
}

125
Fans.Designer.cs generated Normal file
View File

@@ -0,0 +1,125 @@
namespace GHelper
{
partial class Fans
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series();
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
System.Windows.Forms.DataVisualization.Charting.Legend legend2 = new System.Windows.Forms.DataVisualization.Charting.Legend();
System.Windows.Forms.DataVisualization.Charting.Series series2 = new System.Windows.Forms.DataVisualization.Charting.Series();
chartCPU = new System.Windows.Forms.DataVisualization.Charting.Chart();
buttonApply = new Button();
buttonReset = new Button();
chartGPU = new System.Windows.Forms.DataVisualization.Charting.Chart();
((System.ComponentModel.ISupportInitialize)chartCPU).BeginInit();
((System.ComponentModel.ISupportInitialize)chartGPU).BeginInit();
SuspendLayout();
//
// chartCPU
//
chartArea1.Name = "ChartArea1";
chartCPU.ChartAreas.Add(chartArea1);
legend1.Name = "Legend1";
chartCPU.Legends.Add(legend1);
chartCPU.Location = new Point(16, 13);
chartCPU.Name = "chartCPU";
series1.ChartArea = "ChartArea1";
series1.Legend = "Legend1";
series1.Name = "Series1";
chartCPU.Series.Add(series1);
chartCPU.Size = new Size(900, 446);
chartCPU.TabIndex = 0;
chartCPU.Text = "chartCPU";
//
// buttonApply
//
buttonApply.Location = new Point(662, 944);
buttonApply.Name = "buttonApply";
buttonApply.Size = new Size(254, 46);
buttonApply.TabIndex = 1;
buttonApply.Text = "Apply Fan Curve";
buttonApply.UseVisualStyleBackColor = true;
//
// buttonReset
//
buttonReset.Location = new Point(402, 944);
buttonReset.Name = "buttonReset";
buttonReset.Size = new Size(254, 46);
buttonReset.TabIndex = 2;
buttonReset.Text = "Load Default";
buttonReset.UseVisualStyleBackColor = true;
//
// chartGPU
//
chartArea2.Name = "ChartArea1";
chartGPU.ChartAreas.Add(chartArea2);
legend2.Name = "Legend1";
chartGPU.Legends.Add(legend2);
chartGPU.Location = new Point(16, 477);
chartGPU.Name = "chartGPU";
series2.ChartArea = "ChartArea1";
series2.Legend = "Legend1";
series2.Name = "Series1";
chartGPU.Series.Add(series2);
chartGPU.Size = new Size(900, 448);
chartGPU.TabIndex = 3;
chartGPU.Text = "chart1";
//
// Fans
//
AutoScaleDimensions = new SizeF(13F, 32F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(940, 1020);
Controls.Add(chartGPU);
Controls.Add(buttonReset);
Controls.Add(buttonApply);
Controls.Add(chartCPU);
FormBorderStyle = FormBorderStyle.FixedSingle;
MaximizeBox = false;
MdiChildrenMinimizedAnchorBottom = false;
MinimizeBox = false;
Name = "Fans";
ShowIcon = false;
ShowInTaskbar = false;
StartPosition = FormStartPosition.CenterScreen;
Text = "Fans";
((System.ComponentModel.ISupportInitialize)chartCPU).EndInit();
((System.ComponentModel.ISupportInitialize)chartGPU).EndInit();
ResumeLayout(false);
}
#endregion
private System.Windows.Forms.DataVisualization.Charting.Chart chartCPU;
private Button buttonApply;
private Button buttonReset;
private System.Windows.Forms.DataVisualization.Charting.Chart chartGPU;
}
}

185
Fans.cs Normal file
View File

@@ -0,0 +1,185 @@
using System;
using System.Diagnostics;
using System.Windows.Forms.DataVisualization.Charting;
namespace GHelper
{
public partial class Fans : Form
{
DataPoint curPoint = null;
Series seriesCPU;
Series seriesGPU;
void SetChart(Chart chart, string title)
{
chart.Titles.Add(title);
chart.ChartAreas[0].AxisX.Minimum = 10;
chart.ChartAreas[0].AxisX.Maximum = 100;
chart.ChartAreas[0].AxisX.Interval = 10;
chart.ChartAreas[0].AxisY.Minimum = 0;
chart.ChartAreas[0].AxisY.Maximum = 100;
chart.Legends[0].Enabled = false;
}
public Fans()
{
InitializeComponent();
SetChart(chartCPU, "CPU Fan Profile");
SetChart(chartGPU, "GPU Fan Profile");
seriesCPU = chartCPU.Series.Add("CPU");
seriesGPU = chartGPU.Series.Add("GPU");
seriesCPU.Color = Color.Blue;
seriesGPU.Color = Color.Red;
LoadFans();
chartCPU.MouseMove += ChartCPU_MouseMove;
chartCPU.MouseUp += ChartCPU_MouseUp;
chartGPU.MouseMove += ChartCPU_MouseMove;
chartGPU.MouseUp += ChartCPU_MouseUp;
buttonReset.Click += ButtonReset_Click;
buttonApply.Click += ButtonApply_Click;
}
public void LoadFans()
{
LoadProfile(seriesCPU, 0);
LoadProfile(seriesGPU, 1);
}
byte[] StringToBytes(string str)
{
String[] arr = str.Split('-');
byte[] array = new byte[arr.Length];
for (int i = 0; i < arr.Length; i++) array[i] = Convert.ToByte(arr[i], 16);
return array;
}
string GetFanName(int device)
{
int mode = Program.config.getConfig("performance_mode");
string name;
if (device == 1)
name = "gpu";
else
name = "cpu";
return "fan_profile_" + name + "_" + mode;
}
void LoadProfile(Series series, int device, int def = 0)
{
series.ChartType = SeriesChartType.Line;
series.MarkerSize = 10;
series.MarkerStyle = MarkerStyle.Circle;
series.Points.Clear();
int mode = Program.config.getConfig("performance_mode");
string curveString = Program.config.getConfigString(GetFanName(device));
byte[] curve = {};
if (curveString is not null)
curve = StringToBytes(curveString);
if (def == 1 || curve.Length < 16)
curve = Program.wmi.GetFanCurve(device, mode);
Debug.WriteLine(BitConverter.ToString(curve));
byte old = 0;
for (int i = 0; i < 8; i++)
{
if (curve[i] == old) curve[i]++; // preventing 2 points in same spot from default asus profiles
series.Points.AddXY(curve[i], curve[i + 8]);
old = curve[i];
}
}
void ApplyProfile(Series series, int device)
{
byte[] curve = new byte[16];
int i = 0;
foreach (DataPoint point in series.Points)
{
curve[i] = (byte)point.XValue;
curve[i + 8] = (byte)point.YValues.First();
i++;
}
string bitCurve = BitConverter.ToString(curve);
Debug.WriteLine(bitCurve);
Program.config.setConfig(GetFanName(device), bitCurve);
Program.wmi.SetFanCurve(device, curve);
}
private void ButtonApply_Click(object? sender, EventArgs e)
{
ApplyProfile(seriesCPU, 0);
ApplyProfile(seriesGPU, 1);
}
private void ButtonReset_Click(object? sender, EventArgs e)
{
LoadProfile(seriesCPU, 0, 1);
LoadProfile(seriesGPU, 1, 1);
}
private void ChartCPU_MouseUp(object? sender, MouseEventArgs e)
{
curPoint = null;
}
private void ChartCPU_MouseMove(object? sender, MouseEventArgs e)
{
if (sender is null) return;
Chart chart = (Chart)sender;
if (e.Button.HasFlag(MouseButtons.Left))
{
ChartArea ca = chart.ChartAreas[0];
Axis ax = ca.AxisX;
Axis ay = ca.AxisY;
HitTestResult hit = chart.HitTest(e.X, e.Y);
if (hit.Series is not null && hit.PointIndex >= 0)
curPoint = hit.Series.Points[hit.PointIndex];
if (curPoint != null)
{
Series s = hit.Series;
double dx = ax.PixelPositionToValue(e.X);
double dy = ay.PixelPositionToValue(e.Y);
if (dx < 0) dx = 0;
if (dx > 100) dx = 100;
if (dy < 0) dy = 0;
if (dy > 100) dy = 100;
curPoint.XValue = dx;
curPoint.YValues[0] = dy;
}
}
}
}
}

60
Fans.resx Normal file
View File

@@ -0,0 +1,60 @@
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -12,6 +12,7 @@
<ApplicationIcon>favicon.ico</ApplicationIcon> <ApplicationIcon>favicon.ico</ApplicationIcon>
<Platforms>AnyCPU;x64</Platforms> <Platforms>AnyCPU;x64</Platforms>
<SupportedOSPlatformVersion>8.0</SupportedOSPlatformVersion> <SupportedOSPlatformVersion>8.0</SupportedOSPlatformVersion>
<AssemblyName>GHelper</AssemblyName>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
@@ -35,6 +36,7 @@
<PackageReference Include="hidlibrary" Version="3.3.40" /> <PackageReference Include="hidlibrary" Version="3.3.40" />
<PackageReference Include="LibreHardwareMonitorLib" Version="0.9.1" /> <PackageReference Include="LibreHardwareMonitorLib" Version="0.9.1" />
<PackageReference Include="TaskScheduler" Version="2.10.1" /> <PackageReference Include="TaskScheduler" Version="2.10.1" />
<PackageReference Include="WinForms.DataVisualization" Version="1.7.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@@ -48,22 +50,22 @@
<ItemGroup> <ItemGroup>
<Content Include="Resources\eco.ico"> <Content Include="Resources\eco.ico">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content> </Content>
<Content Include="Resources\icons8-charging-battery-48.png"> <Content Include="Resources\icons8-charging-battery-48.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content> </Content>
<Content Include="Resources\icons8-laptop-48.png"> <Content Include="Resources\icons8-laptop-48.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content> </Content>
<Content Include="Resources\icons8-speed-48.png"> <Content Include="Resources\icons8-speed-48.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content> </Content>
<Content Include="Resources\icons8-video-card-48.png"> <Content Include="Resources\icons8-video-card-48.png">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content> </Content>
<Content Include="Resources\ultimate.ico"> <Content Include="Resources\ultimate.ico">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content> </Content>
</ItemGroup> </ItemGroup>

227
NativeMethods.cs Normal file
View File

@@ -0,0 +1,227 @@
using System.Runtime.InteropServices;
public class NativeMethods
{
[DllImport("PowrProf.dll", CharSet = CharSet.Unicode)]
static extern UInt32 PowerWriteDCValueIndex(IntPtr RootPowerKey,
[MarshalAs(UnmanagedType.LPStruct)] Guid SchemeGuid,
[MarshalAs(UnmanagedType.LPStruct)] Guid SubGroupOfPowerSettingsGuid,
[MarshalAs(UnmanagedType.LPStruct)] Guid PowerSettingGuid,
int AcValueIndex);
[DllImport("PowrProf.dll", CharSet = CharSet.Unicode)]
static extern UInt32 PowerWriteACValueIndex(IntPtr RootPowerKey,
[MarshalAs(UnmanagedType.LPStruct)] Guid SchemeGuid,
[MarshalAs(UnmanagedType.LPStruct)] Guid SubGroupOfPowerSettingsGuid,
[MarshalAs(UnmanagedType.LPStruct)] Guid PowerSettingGuid,
int AcValueIndex);
[DllImport("PowrProf.dll", CharSet = CharSet.Unicode)]
static extern UInt32 PowerReadACValueIndex(IntPtr RootPowerKey,
[MarshalAs(UnmanagedType.LPStruct)] Guid SchemeGuid,
[MarshalAs(UnmanagedType.LPStruct)] Guid SubGroupOfPowerSettingsGuid,
[MarshalAs(UnmanagedType.LPStruct)] Guid PowerSettingGuid,
out IntPtr AcValueIndex
);
[DllImport("PowrProf.dll", CharSet = CharSet.Unicode)]
static extern UInt32 PowerReadDCValueIndex(IntPtr RootPowerKey,
[MarshalAs(UnmanagedType.LPStruct)] Guid SchemeGuid,
[MarshalAs(UnmanagedType.LPStruct)] Guid SubGroupOfPowerSettingsGuid,
[MarshalAs(UnmanagedType.LPStruct)] Guid PowerSettingGuid,
out IntPtr AcValueIndex
);
[DllImport("PowrProf.dll", CharSet = CharSet.Unicode)]
static extern UInt32 PowerSetActiveScheme(IntPtr RootPowerKey,
[MarshalAs(UnmanagedType.LPStruct)] Guid SchemeGuid);
[DllImport("PowrProf.dll", CharSet = CharSet.Unicode)]
static extern UInt32 PowerGetActiveScheme(IntPtr UserPowerKey, out IntPtr ActivePolicyGuid);
static readonly Guid GUID_CPU = new Guid("54533251-82be-4824-96c1-47b60b740d00");
static readonly Guid GUID_BOOST = new Guid("be337238-0d82-4146-a960-4f3749d470c7");
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct DEVMODE
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string dmDeviceName;
public short dmSpecVersion;
public short dmDriverVersion;
public short dmSize;
public short dmDriverExtra;
public int dmFields;
public int dmPositionX;
public int dmPositionY;
public int dmDisplayOrientation;
public int dmDisplayFixedOutput;
public short dmColor;
public short dmDuplex;
public short dmYResolution;
public short dmTTOption;
public short dmCollate;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string dmFormName;
public short dmLogPixels;
public short dmBitsPerPel;
public int dmPelsWidth;
public int dmPelsHeight;
public int dmDisplayFlags;
public int dmDisplayFrequency;
public int dmICMMethod;
public int dmICMIntent;
public int dmMediaType;
public int dmDitherType;
public int dmReserved1;
public int dmReserved2;
public int dmPanningWidth;
public int dmPanningHeight;
};
[Flags()]
public enum DisplaySettingsFlags : int
{
CDS_UPDATEREGISTRY = 1,
CDS_TEST = 2,
CDS_FULLSCREEN = 4,
CDS_GLOBAL = 8,
CDS_SET_PRIMARY = 0x10,
CDS_RESET = 0x40000000,
CDS_NORESET = 0x10000000
}
// PInvoke declaration for EnumDisplaySettings Win32 API
[DllImport("user32.dll")]
public static extern int EnumDisplaySettingsEx(
string lpszDeviceName,
int iModeNum,
ref DEVMODE lpDevMode);
// PInvoke declaration for ChangeDisplaySettings Win32 API
[DllImport("user32.dll")]
public static extern int ChangeDisplaySettingsEx(
string lpszDeviceName, ref DEVMODE lpDevMode, IntPtr hwnd,
DisplaySettingsFlags dwflags, IntPtr lParam);
public const int ENUM_CURRENT_SETTINGS = -1;
public const string laptopScreenName = "\\\\.\\DISPLAY1";
public static DEVMODE CreateDevmode()
{
DEVMODE dm = new DEVMODE();
dm.dmDeviceName = new String(new char[32]);
dm.dmFormName = new String(new char[32]);
dm.dmSize = (short)Marshal.SizeOf(dm);
return dm;
}
public static Screen FindLaptopScreen()
{
var screens = Screen.AllScreens;
Screen laptopScreen = null;
foreach (var screen in screens)
{
if (screen.DeviceName == laptopScreenName)
{
laptopScreen = screen;
}
}
if (laptopScreen is null) return null;
else return laptopScreen;
}
public static int GetRefreshRate()
{
DEVMODE dm = CreateDevmode();
Screen laptopScreen = FindLaptopScreen();
int frequency = -1;
if (laptopScreen is null)
return -1;
if (0 != NativeMethods.EnumDisplaySettingsEx(laptopScreen.DeviceName, NativeMethods.ENUM_CURRENT_SETTINGS, ref dm))
{
frequency = dm.dmDisplayFrequency;
}
return frequency;
}
public static int SetRefreshRate(int frequency = 120)
{
DEVMODE dm = CreateDevmode();
Screen laptopScreen = FindLaptopScreen();
if (laptopScreen is null)
return -1;
if (0 != NativeMethods.EnumDisplaySettingsEx(laptopScreen.DeviceName, NativeMethods.ENUM_CURRENT_SETTINGS, ref dm))
{
dm.dmDisplayFrequency = frequency;
int iRet = NativeMethods.ChangeDisplaySettingsEx(laptopScreen.DeviceName, ref dm, IntPtr.Zero, DisplaySettingsFlags.CDS_UPDATEREGISTRY, IntPtr.Zero);
return iRet;
}
return 0;
}
static Guid GetActiveScheme()
{
IntPtr pActiveSchemeGuid;
var hr = PowerGetActiveScheme(IntPtr.Zero, out pActiveSchemeGuid);
Guid activeSchemeGuid = (Guid)Marshal.PtrToStructure(pActiveSchemeGuid, typeof(Guid));
return activeSchemeGuid;
}
public static int GetCPUBoost()
{
IntPtr AcValueIndex;
Guid activeSchemeGuid = GetActiveScheme();
UInt32 value = PowerReadACValueIndex(IntPtr.Zero,
activeSchemeGuid,
GUID_CPU,
GUID_BOOST, out AcValueIndex);
return AcValueIndex.ToInt32();
}
public static void SetCPUBoost(int boost = 0)
{
Guid activeSchemeGuid = GetActiveScheme();
var hrAC = PowerWriteACValueIndex(
IntPtr.Zero,
activeSchemeGuid,
GUID_CPU,
GUID_BOOST,
boost);
PowerSetActiveScheme(IntPtr.Zero, activeSchemeGuid);
var hrDC = PowerWriteDCValueIndex(
IntPtr.Zero,
activeSchemeGuid,
GUID_CPU,
GUID_BOOST,
boost);
PowerSetActiveScheme(IntPtr.Zero, activeSchemeGuid);
}
}

View File

@@ -1,57 +1,8 @@
using HidLibrary;
using LibreHardwareMonitor.Hardware; using LibreHardwareMonitor.Hardware;
using Microsoft.Win32.TaskScheduler;
using System.Diagnostics; using System.Diagnostics;
using System.Management; using System.Management;
using System.Runtime.InteropServices;
using System.Security.Principal;
using System.Text.Json; using System.Text.Json;
public class Startup
{
static string taskName = "GHelper";
public Startup()
{
}
public bool IsScheduled()
{
TaskService taskService = new TaskService();
return (taskService.RootFolder.AllTasks.Any(t => t.Name == taskName));
}
public void Schedule()
{
TaskService taskService = new TaskService();
string strExeFilePath = Application.ExecutablePath;
if (strExeFilePath is null) return;
var userId = WindowsIdentity.GetCurrent().Name;
Debug.WriteLine(strExeFilePath);
TaskDefinition td = TaskService.Instance.NewTask();
td.RegistrationInfo.Description = "GHelper Auto Start";
td.Triggers.Add(new LogonTrigger { UserId = userId, });
td.Actions.Add(strExeFilePath);
td.Settings.StopIfGoingOnBatteries = false;
td.Settings.DisallowStartIfOnBatteries = false;
TaskService.Instance.RootFolder.RegisterTaskDefinition(taskName, td);
}
public void UnSchedule()
{
TaskService taskService = new TaskService();
taskService.RootFolder.DeleteTask(taskName);
}
}
public class AppConfig public class AppConfig
{ {
@@ -104,310 +55,28 @@ public class AppConfig
else return -1; else return -1;
} }
public string getConfigString(string name)
{
if (config.ContainsKey(name))
return config[name].ToString();
else return null;
}
public void setConfig(string name, int value) public void setConfig(string name, int value)
{ {
config[name] = value; config[name] = value;
string jsonString = JsonSerializer.Serialize(config); string jsonString = JsonSerializer.Serialize(config, new JsonSerializerOptions { WriteIndented = true });
File.WriteAllText(configFile, jsonString);
}
public void setConfig(string name, string value)
{
config[name] = value;
string jsonString = JsonSerializer.Serialize(config, new JsonSerializerOptions { WriteIndented = true });
File.WriteAllText(configFile, jsonString); File.WriteAllText(configFile, jsonString);
} }
}
public class NativeMethods
{
[DllImport("PowrProf.dll", CharSet = CharSet.Unicode)]
static extern UInt32 PowerWriteDCValueIndex(IntPtr RootPowerKey,
[MarshalAs(UnmanagedType.LPStruct)] Guid SchemeGuid,
[MarshalAs(UnmanagedType.LPStruct)] Guid SubGroupOfPowerSettingsGuid,
[MarshalAs(UnmanagedType.LPStruct)] Guid PowerSettingGuid,
int AcValueIndex);
[DllImport("PowrProf.dll", CharSet = CharSet.Unicode)]
static extern UInt32 PowerWriteACValueIndex(IntPtr RootPowerKey,
[MarshalAs(UnmanagedType.LPStruct)] Guid SchemeGuid,
[MarshalAs(UnmanagedType.LPStruct)] Guid SubGroupOfPowerSettingsGuid,
[MarshalAs(UnmanagedType.LPStruct)] Guid PowerSettingGuid,
int AcValueIndex);
[DllImport("PowrProf.dll", CharSet = CharSet.Unicode)]
static extern UInt32 PowerReadACValueIndex(IntPtr RootPowerKey,
[MarshalAs(UnmanagedType.LPStruct)] Guid SchemeGuid,
[MarshalAs(UnmanagedType.LPStruct)] Guid SubGroupOfPowerSettingsGuid,
[MarshalAs(UnmanagedType.LPStruct)] Guid PowerSettingGuid,
out IntPtr AcValueIndex
);
[DllImport("PowrProf.dll", CharSet = CharSet.Unicode)]
static extern UInt32 PowerReadDCValueIndex(IntPtr RootPowerKey,
[MarshalAs(UnmanagedType.LPStruct)] Guid SchemeGuid,
[MarshalAs(UnmanagedType.LPStruct)] Guid SubGroupOfPowerSettingsGuid,
[MarshalAs(UnmanagedType.LPStruct)] Guid PowerSettingGuid,
out IntPtr AcValueIndex
);
[DllImport("PowrProf.dll", CharSet = CharSet.Unicode)]
static extern UInt32 PowerSetActiveScheme(IntPtr RootPowerKey,
[MarshalAs(UnmanagedType.LPStruct)] Guid SchemeGuid);
[DllImport("PowrProf.dll", CharSet = CharSet.Unicode)]
static extern UInt32 PowerGetActiveScheme(IntPtr UserPowerKey, out IntPtr ActivePolicyGuid);
static readonly Guid GUID_CPU = new Guid("54533251-82be-4824-96c1-47b60b740d00");
static readonly Guid GUID_BOOST = new Guid("be337238-0d82-4146-a960-4f3749d470c7");
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct DEVMODE
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string dmDeviceName;
public short dmSpecVersion;
public short dmDriverVersion;
public short dmSize;
public short dmDriverExtra;
public int dmFields;
public int dmPositionX;
public int dmPositionY;
public int dmDisplayOrientation;
public int dmDisplayFixedOutput;
public short dmColor;
public short dmDuplex;
public short dmYResolution;
public short dmTTOption;
public short dmCollate;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string dmFormName;
public short dmLogPixels;
public short dmBitsPerPel;
public int dmPelsWidth;
public int dmPelsHeight;
public int dmDisplayFlags;
public int dmDisplayFrequency;
public int dmICMMethod;
public int dmICMIntent;
public int dmMediaType;
public int dmDitherType;
public int dmReserved1;
public int dmReserved2;
public int dmPanningWidth;
public int dmPanningHeight;
};
[Flags()]
public enum DisplaySettingsFlags : int
{
CDS_UPDATEREGISTRY = 1,
CDS_TEST = 2,
CDS_FULLSCREEN = 4,
CDS_GLOBAL = 8,
CDS_SET_PRIMARY = 0x10,
CDS_RESET = 0x40000000,
CDS_NORESET = 0x10000000
}
// PInvoke declaration for EnumDisplaySettings Win32 API
[DllImport("user32.dll")]
public static extern int EnumDisplaySettingsEx(
string lpszDeviceName,
int iModeNum,
ref DEVMODE lpDevMode);
// PInvoke declaration for ChangeDisplaySettings Win32 API
[DllImport("user32.dll")]
public static extern int ChangeDisplaySettingsEx(
string lpszDeviceName, ref DEVMODE lpDevMode, IntPtr hwnd,
DisplaySettingsFlags dwflags, IntPtr lParam);
public const int ENUM_CURRENT_SETTINGS = -1;
public const string laptopScreenName = "\\\\.\\DISPLAY1";
public static DEVMODE CreateDevmode()
{
DEVMODE dm = new DEVMODE();
dm.dmDeviceName = new String(new char[32]);
dm.dmFormName = new String(new char[32]);
dm.dmSize = (short)Marshal.SizeOf(dm);
return dm;
}
public static Screen FindLaptopScreen()
{
var screens = Screen.AllScreens;
Screen laptopScreen = null;
foreach (var screen in screens)
{
if (screen.DeviceName == laptopScreenName)
{
laptopScreen = screen;
}
}
if (laptopScreen is null) return null;
else return laptopScreen;
}
public static int GetRefreshRate()
{
DEVMODE dm = CreateDevmode();
Screen laptopScreen = FindLaptopScreen();
int frequency = -1;
if (laptopScreen is null)
return -1;
if (0 != NativeMethods.EnumDisplaySettingsEx(laptopScreen.DeviceName, NativeMethods.ENUM_CURRENT_SETTINGS, ref dm))
{
frequency = dm.dmDisplayFrequency;
}
return frequency;
}
public static int SetRefreshRate(int frequency = 120)
{
DEVMODE dm = CreateDevmode();
Screen laptopScreen = FindLaptopScreen();
if (laptopScreen is null)
return -1;
if (0 != NativeMethods.EnumDisplaySettingsEx(laptopScreen.DeviceName, NativeMethods.ENUM_CURRENT_SETTINGS, ref dm))
{
dm.dmDisplayFrequency = frequency;
int iRet = NativeMethods.ChangeDisplaySettingsEx(laptopScreen.DeviceName, ref dm, IntPtr.Zero, DisplaySettingsFlags.CDS_UPDATEREGISTRY, IntPtr.Zero);
return iRet;
}
return 0;
}
static Guid GetActiveScheme()
{
IntPtr pActiveSchemeGuid;
var hr = PowerGetActiveScheme(IntPtr.Zero, out pActiveSchemeGuid);
Guid activeSchemeGuid = (Guid)Marshal.PtrToStructure(pActiveSchemeGuid, typeof(Guid));
return activeSchemeGuid;
}
public static int GetCPUBoost()
{
IntPtr AcValueIndex;
Guid activeSchemeGuid = GetActiveScheme();
UInt32 value = PowerReadACValueIndex(IntPtr.Zero,
activeSchemeGuid,
GUID_CPU,
GUID_BOOST, out AcValueIndex);
return AcValueIndex.ToInt32();
}
public static void SetCPUBoost(int boost = 0)
{
Guid activeSchemeGuid = GetActiveScheme();
var hrAC = PowerWriteACValueIndex(
IntPtr.Zero,
activeSchemeGuid,
GUID_CPU,
GUID_BOOST,
boost);
PowerSetActiveScheme(IntPtr.Zero, activeSchemeGuid);
var hrDC = PowerWriteDCValueIndex(
IntPtr.Zero,
activeSchemeGuid,
GUID_CPU,
GUID_BOOST,
boost);
PowerSetActiveScheme(IntPtr.Zero, activeSchemeGuid);
}
}
public class Aura
{
static byte[] MESSAGE_SET = { 0x5d, 0xb5 };
static byte[] MESSAGE_APPLY = { 0x5d, 0xb4 };
public const int Static = 0;
public const int Breathe = 1;
public const int Strobe = 2;
public const int Rainbow = 3;
public const int Dingding = 10;
public const int SpeedSlow = 0;
public const int SpeedMedium = 1;
public const int SpeedHigh = 2;
public static int Mode = Static;
public static Color Color1 = Color.White;
public static Color Color2 = Color.Black;
public static int Speed = SpeedSlow;
public static byte[] AuraMessage(int mode, Color color, Color color2, int speed)
{
byte[] msg = new byte[17];
msg[0] = 0x5d;
msg[1] = 0xb3;
msg[2] = 0x00; // Zone
msg[3] = (byte)mode; // Aura Mode
msg[4] = (byte)(color.R); // R
msg[5] = (byte)(color.G); // G
msg[6] = (byte)(color.B); // B
msg[7] = (byte)speed; // aura.speed as u8;
msg[8] = 0; // aura.direction as u8;
msg[10] = (byte)(color2.R); // R
msg[11] = (byte)(color2.G); // G
msg[12] = (byte)(color2.B); // B
return msg;
}
public static void ApplyAura()
{
HidDevice[] HidDeviceList;
int[] deviceIds = { 0x1854, 0x1869, 0x1866, 0x19b6 };
HidDeviceList = HidDevices.Enumerate(0x0b05, deviceIds).ToArray();
foreach (HidDevice device in HidDeviceList)
{
if (device.IsConnected)
{
if (device.Description.IndexOf("HID") >= 0)
{
device.OpenDevice();
byte[] msg = AuraMessage(Mode, Color1, Color2, Speed);
device.Write(msg);
device.Write(MESSAGE_SET);
device.Write(MESSAGE_APPLY);
device.CloseDevice();
}
}
}
}
} }
@@ -515,37 +184,27 @@ namespace GHelper
{ {
static class Program static class Program
{ {
public static NotifyIcon trayIcon; public static NotifyIcon trayIcon = new NotifyIcon
{
Text = "G-Helper",
Icon = Properties.Resources.standard,
Visible = true
};
public static ASUSWmi wmi; public static ASUSWmi wmi = new ASUSWmi();
public static AppConfig config; public static AppConfig config = new AppConfig();
public static SettingsForm settingsForm; public static SettingsForm settingsForm = new SettingsForm();
public static HardwareMonitor hwmonitor = new HardwareMonitor();
public static Startup scheduler;
public static HardwareMonitor hwmonitor;
// The main entry point for the application // The main entry point for the application
public static void Main() public static void Main()
{ {
trayIcon = new NotifyIcon
{
Text = "G-Helper",
Icon = GHelper.Properties.Resources.standard,
Visible = true
};
trayIcon.MouseClick += TrayIcon_MouseClick; ; trayIcon.MouseClick += TrayIcon_MouseClick; ;
config = new AppConfig();
wmi = new ASUSWmi();
wmi.SubscribeToEvents(WatcherEventArrived); wmi.SubscribeToEvents(WatcherEventArrived);
scheduler = new Startup();
settingsForm = new SettingsForm();
settingsForm.InitGPUMode(); settingsForm.InitGPUMode();
settingsForm.InitBoost(); settingsForm.InitBoost();
settingsForm.InitAura(); settingsForm.InitAura();
@@ -556,13 +215,13 @@ namespace GHelper
settingsForm.VisualiseGPUAuto(config.getConfig("gpu_auto")); settingsForm.VisualiseGPUAuto(config.getConfig("gpu_auto"));
settingsForm.VisualiseScreenAuto(config.getConfig("screen_auto")); settingsForm.VisualiseScreenAuto(config.getConfig("screen_auto"));
settingsForm.SetStartupCheck(scheduler.IsScheduled()); settingsForm.SetStartupCheck(Startup.IsScheduled());
bool isPlugged = (System.Windows.Forms.SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online); bool isPlugged = (System.Windows.Forms.SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online);
settingsForm.AutoGPUMode(isPlugged ? 1 : 0); settingsForm.AutoGPUMode(isPlugged ? 1 : 0);
settingsForm.AutoScreen(isPlugged ? 1 : 0); settingsForm.AutoScreen(isPlugged ? 1 : 0);
hwmonitor = new HardwareMonitor();
IntPtr dummy = settingsForm.Handle; IntPtr dummy = settingsForm.Handle;
Application.Run(); Application.Run();

877
Settings.Designer.cs generated
View File

@@ -29,546 +29,539 @@
private void InitializeComponent() private void InitializeComponent()
{ {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SettingsForm)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SettingsForm));
this.checkStartup = new System.Windows.Forms.CheckBox(); checkStartup = new CheckBox();
this.trackBattery = new System.Windows.Forms.TrackBar(); trackBattery = new TrackBar();
this.labelBatteryTitle = new System.Windows.Forms.Label(); labelBatteryTitle = new Label();
this.pictureBattery = new System.Windows.Forms.PictureBox(); pictureBattery = new PictureBox();
this.labelGPUFan = new System.Windows.Forms.Label(); labelGPUFan = new Label();
this.tableGPU = new System.Windows.Forms.TableLayoutPanel(); tableGPU = new TableLayoutPanel();
this.buttonUltimate = new System.Windows.Forms.Button(); buttonUltimate = new Button();
this.buttonStandard = new System.Windows.Forms.Button(); buttonStandard = new Button();
this.buttonEco = new System.Windows.Forms.Button(); buttonEco = new Button();
this.labelGPU = new System.Windows.Forms.Label(); labelGPU = new Label();
this.pictureGPU = new System.Windows.Forms.PictureBox(); pictureGPU = new PictureBox();
this.labelCPUFan = new System.Windows.Forms.Label(); labelCPUFan = new Label();
this.tablePerf = new System.Windows.Forms.TableLayoutPanel(); tablePerf = new TableLayoutPanel();
this.buttonTurbo = new System.Windows.Forms.Button(); buttonTurbo = new Button();
this.buttonBalanced = new System.Windows.Forms.Button(); buttonBalanced = new Button();
this.buttonSilent = new System.Windows.Forms.Button(); buttonSilent = new Button();
this.picturePerf = new System.Windows.Forms.PictureBox(); picturePerf = new PictureBox();
this.labelPerf = new System.Windows.Forms.Label(); labelPerf = new Label();
this.checkGPU = new System.Windows.Forms.CheckBox(); checkGPU = new CheckBox();
this.buttonQuit = new System.Windows.Forms.Button(); buttonQuit = new Button();
this.pictureScreen = new System.Windows.Forms.PictureBox(); pictureScreen = new PictureBox();
this.labelSreen = new System.Windows.Forms.Label(); labelSreen = new Label();
this.tableScreen = new System.Windows.Forms.TableLayoutPanel(); tableScreen = new TableLayoutPanel();
this.button120Hz = new System.Windows.Forms.Button(); button120Hz = new Button();
this.button60Hz = new System.Windows.Forms.Button(); button60Hz = new Button();
this.checkScreen = new System.Windows.Forms.CheckBox(); checkScreen = new CheckBox();
this.checkBoost = new System.Windows.Forms.CheckBox(); checkBoost = new CheckBox();
this.pictureBox1 = new System.Windows.Forms.PictureBox(); pictureBox1 = new PictureBox();
this.label1 = new System.Windows.Forms.Label(); label1 = new Label();
this.comboKeyboard = new System.Windows.Forms.ComboBox(); comboKeyboard = new ComboBox();
this.buttonKeyboardColor = new System.Windows.Forms.Button(); buttonKeyboardColor = new Button();
this.pictureBox2 = new System.Windows.Forms.PictureBox(); labelBattery = new Label();
this.labelBattery = new System.Windows.Forms.Label(); buttonFans = new Button();
((System.ComponentModel.ISupportInitialize)(this.trackBattery)).BeginInit(); ((System.ComponentModel.ISupportInitialize)trackBattery).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBattery)).BeginInit(); ((System.ComponentModel.ISupportInitialize)pictureBattery).BeginInit();
this.tableGPU.SuspendLayout(); tableGPU.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureGPU)).BeginInit(); ((System.ComponentModel.ISupportInitialize)pictureGPU).BeginInit();
this.tablePerf.SuspendLayout(); tablePerf.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.picturePerf)).BeginInit(); ((System.ComponentModel.ISupportInitialize)picturePerf).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureScreen)).BeginInit(); ((System.ComponentModel.ISupportInitialize)pictureScreen).BeginInit();
this.tableScreen.SuspendLayout(); tableScreen.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); SuspendLayout();
this.SuspendLayout();
// //
// checkStartup // checkStartup
// //
this.checkStartup.AutoSize = true; checkStartup.AutoSize = true;
this.checkStartup.Location = new System.Drawing.Point(40, 1007); checkStartup.Location = new Point(41, 1007);
this.checkStartup.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2); checkStartup.Margin = new Padding(4, 2, 4, 2);
this.checkStartup.Name = "checkStartup"; checkStartup.Name = "checkStartup";
this.checkStartup.Size = new System.Drawing.Size(206, 36); checkStartup.Size = new Size(206, 36);
this.checkStartup.TabIndex = 2; checkStartup.TabIndex = 2;
this.checkStartup.Text = "Run on Startup"; checkStartup.Text = "Run on Startup";
this.checkStartup.UseVisualStyleBackColor = true; checkStartup.UseVisualStyleBackColor = true;
this.checkStartup.CheckedChanged += new System.EventHandler(this.checkStartup_CheckedChanged); checkStartup.CheckedChanged += checkStartup_CheckedChanged;
// //
// trackBattery // trackBattery
// //
this.trackBattery.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) trackBattery.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
| System.Windows.Forms.AnchorStyles.Right))); trackBattery.LargeChange = 20;
this.trackBattery.LargeChange = 20; trackBattery.Location = new Point(20, 909);
this.trackBattery.Location = new System.Drawing.Point(20, 908); trackBattery.Margin = new Padding(4, 2, 4, 2);
this.trackBattery.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2); trackBattery.Maximum = 100;
this.trackBattery.Maximum = 100; trackBattery.Minimum = 50;
this.trackBattery.Minimum = 50; trackBattery.Name = "trackBattery";
this.trackBattery.Name = "trackBattery"; trackBattery.Size = new Size(674, 90);
this.trackBattery.Size = new System.Drawing.Size(690, 90); trackBattery.SmallChange = 10;
this.trackBattery.SmallChange = 10; trackBattery.TabIndex = 3;
this.trackBattery.TabIndex = 3; trackBattery.TickFrequency = 10;
this.trackBattery.TickFrequency = 10; trackBattery.TickStyle = TickStyle.TopLeft;
this.trackBattery.TickStyle = System.Windows.Forms.TickStyle.TopLeft; trackBattery.Value = 100;
this.trackBattery.Value = 100;
// //
// labelBatteryTitle // labelBatteryTitle
// //
this.labelBatteryTitle.AutoSize = true; labelBatteryTitle.AutoSize = true;
this.labelBatteryTitle.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); labelBatteryTitle.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
this.labelBatteryTitle.Location = new System.Drawing.Point(77, 871); labelBatteryTitle.Location = new Point(76, 870);
this.labelBatteryTitle.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); labelBatteryTitle.Margin = new Padding(4, 0, 4, 0);
this.labelBatteryTitle.Name = "labelBatteryTitle"; labelBatteryTitle.Name = "labelBatteryTitle";
this.labelBatteryTitle.Size = new System.Drawing.Size(248, 32); labelBatteryTitle.Size = new Size(248, 32);
this.labelBatteryTitle.TabIndex = 4; labelBatteryTitle.TabIndex = 4;
this.labelBatteryTitle.Text = "Battery Charge Limit"; labelBatteryTitle.Text = "Battery Charge Limit";
// //
// pictureBattery // pictureBattery
// //
this.pictureBattery.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureBattery.BackgroundImage"))); pictureBattery.BackgroundImage = (Image)resources.GetObject("pictureBattery.BackgroundImage");
this.pictureBattery.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; pictureBattery.BackgroundImageLayout = ImageLayout.Zoom;
this.pictureBattery.Location = new System.Drawing.Point(33, 868); pictureBattery.Location = new Point(33, 868);
this.pictureBattery.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2); pictureBattery.Margin = new Padding(4, 2, 4, 2);
this.pictureBattery.Name = "pictureBattery"; pictureBattery.Name = "pictureBattery";
this.pictureBattery.Size = new System.Drawing.Size(38, 38); pictureBattery.Size = new Size(37, 38);
this.pictureBattery.TabIndex = 6; pictureBattery.TabIndex = 6;
this.pictureBattery.TabStop = false; pictureBattery.TabStop = false;
// //
// labelGPUFan // labelGPUFan
// //
this.labelGPUFan.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); labelGPUFan.Anchor = AnchorStyles.Top | AnchorStyles.Right;
this.labelGPUFan.Location = new System.Drawing.Point(425, 262); labelGPUFan.Location = new Point(409, 262);
this.labelGPUFan.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); labelGPUFan.Margin = new Padding(4, 0, 4, 0);
this.labelGPUFan.Name = "labelGPUFan"; labelGPUFan.Name = "labelGPUFan";
this.labelGPUFan.Size = new System.Drawing.Size(277, 32); labelGPUFan.Size = new Size(277, 32);
this.labelGPUFan.TabIndex = 8; labelGPUFan.TabIndex = 8;
this.labelGPUFan.Text = "GPU Fan : 0%"; labelGPUFan.Text = "GPU Fan : 0%";
this.labelGPUFan.TextAlign = System.Drawing.ContentAlignment.TopRight; labelGPUFan.TextAlign = ContentAlignment.TopRight;
// //
// tableGPU // tableGPU
// //
this.tableGPU.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) tableGPU.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
| System.Windows.Forms.AnchorStyles.Right))); tableGPU.ColumnCount = 3;
this.tableGPU.ColumnCount = 3; tableGPU.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F));
this.tableGPU.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); tableGPU.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F));
this.tableGPU.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); tableGPU.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F));
this.tableGPU.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); tableGPU.Controls.Add(buttonUltimate, 2, 0);
this.tableGPU.Controls.Add(this.buttonUltimate, 2, 0); tableGPU.Controls.Add(buttonStandard, 1, 0);
this.tableGPU.Controls.Add(this.buttonStandard, 1, 0); tableGPU.Controls.Add(buttonEco, 0, 0);
this.tableGPU.Controls.Add(this.buttonEco, 0, 0); tableGPU.Location = new Point(22, 303);
this.tableGPU.Location = new System.Drawing.Point(22, 303); tableGPU.Margin = new Padding(4, 2, 4, 2);
this.tableGPU.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2); tableGPU.Name = "tableGPU";
this.tableGPU.Name = "tableGPU"; tableGPU.RowCount = 1;
this.tableGPU.RowCount = 1; tableGPU.RowStyles.Add(new RowStyle(SizeType.Absolute, 107F));
this.tableGPU.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 107F)); tableGPU.Size = new Size(674, 107);
this.tableGPU.Size = new System.Drawing.Size(690, 107); tableGPU.TabIndex = 7;
this.tableGPU.TabIndex = 7;
// //
// buttonUltimate // buttonUltimate
// //
this.buttonUltimate.BackColor = System.Drawing.SystemColors.ControlLightLight; buttonUltimate.BackColor = SystemColors.ControlLightLight;
this.buttonUltimate.Dock = System.Windows.Forms.DockStyle.Fill; buttonUltimate.Dock = DockStyle.Fill;
this.buttonUltimate.FlatAppearance.BorderSize = 0; buttonUltimate.FlatAppearance.BorderSize = 0;
this.buttonUltimate.FlatStyle = System.Windows.Forms.FlatStyle.Flat; buttonUltimate.FlatStyle = FlatStyle.Flat;
this.buttonUltimate.Location = new System.Drawing.Point(469, 11); buttonUltimate.Location = new Point(457, 11);
this.buttonUltimate.Margin = new System.Windows.Forms.Padding(9, 11, 9, 11); buttonUltimate.Margin = new Padding(9, 11, 9, 11);
this.buttonUltimate.Name = "buttonUltimate"; buttonUltimate.Name = "buttonUltimate";
this.buttonUltimate.Size = new System.Drawing.Size(212, 85); buttonUltimate.Size = new Size(208, 85);
this.buttonUltimate.TabIndex = 2; buttonUltimate.TabIndex = 2;
this.buttonUltimate.Text = "Ultimate"; buttonUltimate.Text = "Ultimate";
this.buttonUltimate.UseVisualStyleBackColor = false; buttonUltimate.UseVisualStyleBackColor = false;
// //
// buttonStandard // buttonStandard
// //
this.buttonStandard.BackColor = System.Drawing.SystemColors.ControlLightLight; buttonStandard.BackColor = SystemColors.ControlLightLight;
this.buttonStandard.Dock = System.Windows.Forms.DockStyle.Fill; buttonStandard.Dock = DockStyle.Fill;
this.buttonStandard.FlatAppearance.BorderSize = 0; buttonStandard.FlatAppearance.BorderSize = 0;
this.buttonStandard.FlatStyle = System.Windows.Forms.FlatStyle.Flat; buttonStandard.FlatStyle = FlatStyle.Flat;
this.buttonStandard.Location = new System.Drawing.Point(239, 11); buttonStandard.Location = new Point(233, 11);
this.buttonStandard.Margin = new System.Windows.Forms.Padding(9, 11, 9, 11); buttonStandard.Margin = new Padding(9, 11, 9, 11);
this.buttonStandard.Name = "buttonStandard"; buttonStandard.Name = "buttonStandard";
this.buttonStandard.Size = new System.Drawing.Size(212, 85); buttonStandard.Size = new Size(206, 85);
this.buttonStandard.TabIndex = 1; buttonStandard.TabIndex = 1;
this.buttonStandard.Text = "Standard"; buttonStandard.Text = "Standard";
this.buttonStandard.UseVisualStyleBackColor = false; buttonStandard.UseVisualStyleBackColor = false;
// //
// buttonEco // buttonEco
// //
this.buttonEco.BackColor = System.Drawing.SystemColors.ControlLightLight; buttonEco.BackColor = SystemColors.ControlLightLight;
this.buttonEco.CausesValidation = false; buttonEco.CausesValidation = false;
this.buttonEco.Dock = System.Windows.Forms.DockStyle.Fill; buttonEco.Dock = DockStyle.Fill;
this.buttonEco.FlatAppearance.BorderSize = 0; buttonEco.FlatAppearance.BorderSize = 0;
this.buttonEco.FlatStyle = System.Windows.Forms.FlatStyle.Flat; buttonEco.FlatStyle = FlatStyle.Flat;
this.buttonEco.Location = new System.Drawing.Point(9, 11); buttonEco.Location = new Point(9, 11);
this.buttonEco.Margin = new System.Windows.Forms.Padding(9, 11, 9, 11); buttonEco.Margin = new Padding(9, 11, 9, 11);
this.buttonEco.Name = "buttonEco"; buttonEco.Name = "buttonEco";
this.buttonEco.Size = new System.Drawing.Size(212, 85); buttonEco.Size = new Size(206, 85);
this.buttonEco.TabIndex = 0; buttonEco.TabIndex = 0;
this.buttonEco.Text = "Eco"; buttonEco.Text = "Eco";
this.buttonEco.UseVisualStyleBackColor = false; buttonEco.UseVisualStyleBackColor = false;
// //
// labelGPU // labelGPU
// //
this.labelGPU.AutoSize = true; labelGPU.AutoSize = true;
this.labelGPU.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); labelGPU.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
this.labelGPU.Location = new System.Drawing.Point(77, 265); labelGPU.Location = new Point(76, 265);
this.labelGPU.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); labelGPU.Margin = new Padding(4, 0, 4, 0);
this.labelGPU.Name = "labelGPU"; labelGPU.Name = "labelGPU";
this.labelGPU.Size = new System.Drawing.Size(136, 32); labelGPU.Size = new Size(136, 32);
this.labelGPU.TabIndex = 9; labelGPU.TabIndex = 9;
this.labelGPU.Text = "GPU Mode"; labelGPU.Text = "GPU Mode";
// //
// pictureGPU // pictureGPU
// //
this.pictureGPU.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureGPU.BackgroundImage"))); pictureGPU.BackgroundImage = (Image)resources.GetObject("pictureGPU.BackgroundImage");
this.pictureGPU.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; pictureGPU.BackgroundImageLayout = ImageLayout.Zoom;
this.pictureGPU.Location = new System.Drawing.Point(33, 263); pictureGPU.Location = new Point(33, 262);
this.pictureGPU.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2); pictureGPU.Margin = new Padding(4, 2, 4, 2);
this.pictureGPU.Name = "pictureGPU"; pictureGPU.Name = "pictureGPU";
this.pictureGPU.Size = new System.Drawing.Size(38, 38); pictureGPU.Size = new Size(37, 38);
this.pictureGPU.TabIndex = 10; pictureGPU.TabIndex = 10;
this.pictureGPU.TabStop = false; pictureGPU.TabStop = false;
// //
// labelCPUFan // labelCPUFan
// //
this.labelCPUFan.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); labelCPUFan.Anchor = AnchorStyles.Top | AnchorStyles.Right;
this.labelCPUFan.Location = new System.Drawing.Point(425, 38); labelCPUFan.Location = new Point(409, 38);
this.labelCPUFan.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); labelCPUFan.Margin = new Padding(4, 0, 4, 0);
this.labelCPUFan.Name = "labelCPUFan"; labelCPUFan.Name = "labelCPUFan";
this.labelCPUFan.Size = new System.Drawing.Size(277, 32); labelCPUFan.Size = new Size(277, 32);
this.labelCPUFan.TabIndex = 12; labelCPUFan.TabIndex = 12;
this.labelCPUFan.Text = "CPU Fan : 0%"; labelCPUFan.Text = "CPU Fan : 0%";
this.labelCPUFan.TextAlign = System.Drawing.ContentAlignment.TopRight; labelCPUFan.TextAlign = ContentAlignment.TopRight;
// //
// tablePerf // tablePerf
// //
this.tablePerf.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) tablePerf.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
| System.Windows.Forms.AnchorStyles.Right))); tablePerf.ColumnCount = 3;
this.tablePerf.ColumnCount = 3; tablePerf.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F));
this.tablePerf.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); tablePerf.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F));
this.tablePerf.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); tablePerf.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F));
this.tablePerf.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); tablePerf.Controls.Add(buttonTurbo, 2, 0);
this.tablePerf.Controls.Add(this.buttonTurbo, 2, 0); tablePerf.Controls.Add(buttonBalanced, 1, 0);
this.tablePerf.Controls.Add(this.buttonBalanced, 1, 0); tablePerf.Controls.Add(buttonSilent, 0, 0);
this.tablePerf.Controls.Add(this.buttonSilent, 0, 0); tablePerf.Location = new Point(22, 77);
this.tablePerf.Location = new System.Drawing.Point(22, 76); tablePerf.Margin = new Padding(4, 2, 4, 2);
this.tablePerf.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2); tablePerf.Name = "tablePerf";
this.tablePerf.Name = "tablePerf"; tablePerf.RowCount = 1;
this.tablePerf.RowCount = 1; tablePerf.RowStyles.Add(new RowStyle(SizeType.Absolute, 107F));
this.tablePerf.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 107F)); tablePerf.Size = new Size(674, 107);
this.tablePerf.Size = new System.Drawing.Size(690, 107); tablePerf.TabIndex = 11;
this.tablePerf.TabIndex = 11;
// //
// buttonTurbo // buttonTurbo
// //
this.buttonTurbo.BackColor = System.Drawing.SystemColors.ControlLightLight; buttonTurbo.BackColor = SystemColors.ControlLightLight;
this.buttonTurbo.Dock = System.Windows.Forms.DockStyle.Fill; buttonTurbo.Dock = DockStyle.Fill;
this.buttonTurbo.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); buttonTurbo.FlatAppearance.BorderColor = Color.FromArgb(192, 0, 0);
this.buttonTurbo.FlatAppearance.BorderSize = 0; buttonTurbo.FlatAppearance.BorderSize = 0;
this.buttonTurbo.FlatStyle = System.Windows.Forms.FlatStyle.Flat; buttonTurbo.FlatStyle = FlatStyle.Flat;
this.buttonTurbo.Location = new System.Drawing.Point(469, 11); buttonTurbo.Location = new Point(457, 11);
this.buttonTurbo.Margin = new System.Windows.Forms.Padding(9, 11, 9, 11); buttonTurbo.Margin = new Padding(9, 11, 9, 11);
this.buttonTurbo.Name = "buttonTurbo"; buttonTurbo.Name = "buttonTurbo";
this.buttonTurbo.Size = new System.Drawing.Size(212, 85); buttonTurbo.Size = new Size(208, 85);
this.buttonTurbo.TabIndex = 2; buttonTurbo.TabIndex = 2;
this.buttonTurbo.Text = "Turbo"; buttonTurbo.Text = "Turbo";
this.buttonTurbo.UseVisualStyleBackColor = false; buttonTurbo.UseVisualStyleBackColor = false;
// //
// buttonBalanced // buttonBalanced
// //
this.buttonBalanced.BackColor = System.Drawing.SystemColors.ControlLightLight; buttonBalanced.BackColor = SystemColors.ControlLightLight;
this.buttonBalanced.Dock = System.Windows.Forms.DockStyle.Fill; buttonBalanced.Dock = DockStyle.Fill;
this.buttonBalanced.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(192))))); buttonBalanced.FlatAppearance.BorderColor = Color.FromArgb(0, 0, 192);
this.buttonBalanced.FlatAppearance.BorderSize = 0; buttonBalanced.FlatAppearance.BorderSize = 0;
this.buttonBalanced.FlatStyle = System.Windows.Forms.FlatStyle.Flat; buttonBalanced.FlatStyle = FlatStyle.Flat;
this.buttonBalanced.Location = new System.Drawing.Point(239, 11); buttonBalanced.Location = new Point(233, 11);
this.buttonBalanced.Margin = new System.Windows.Forms.Padding(9, 11, 9, 11); buttonBalanced.Margin = new Padding(9, 11, 9, 11);
this.buttonBalanced.Name = "buttonBalanced"; buttonBalanced.Name = "buttonBalanced";
this.buttonBalanced.Size = new System.Drawing.Size(212, 85); buttonBalanced.Size = new Size(206, 85);
this.buttonBalanced.TabIndex = 1; buttonBalanced.TabIndex = 1;
this.buttonBalanced.Text = "Balanced"; buttonBalanced.Text = "Balanced";
this.buttonBalanced.UseVisualStyleBackColor = false; buttonBalanced.UseVisualStyleBackColor = false;
// //
// buttonSilent // buttonSilent
// //
this.buttonSilent.BackColor = System.Drawing.SystemColors.ControlLightLight; buttonSilent.BackColor = SystemColors.ControlLightLight;
this.buttonSilent.CausesValidation = false; buttonSilent.CausesValidation = false;
this.buttonSilent.Dock = System.Windows.Forms.DockStyle.Fill; buttonSilent.Dock = DockStyle.Fill;
this.buttonSilent.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192))))); buttonSilent.FlatAppearance.BorderColor = Color.FromArgb(0, 192, 192);
this.buttonSilent.FlatAppearance.BorderSize = 0; buttonSilent.FlatAppearance.BorderSize = 0;
this.buttonSilent.FlatStyle = System.Windows.Forms.FlatStyle.Flat; buttonSilent.FlatStyle = FlatStyle.Flat;
this.buttonSilent.Location = new System.Drawing.Point(9, 11); buttonSilent.Location = new Point(9, 11);
this.buttonSilent.Margin = new System.Windows.Forms.Padding(9, 11, 9, 11); buttonSilent.Margin = new Padding(9, 11, 9, 11);
this.buttonSilent.Name = "buttonSilent"; buttonSilent.Name = "buttonSilent";
this.buttonSilent.Size = new System.Drawing.Size(212, 85); buttonSilent.Size = new Size(206, 85);
this.buttonSilent.TabIndex = 0; buttonSilent.TabIndex = 0;
this.buttonSilent.Text = "Silent"; buttonSilent.Text = "Silent";
this.buttonSilent.UseVisualStyleBackColor = false; buttonSilent.UseVisualStyleBackColor = false;
// //
// picturePerf // picturePerf
// //
this.picturePerf.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("picturePerf.BackgroundImage"))); picturePerf.BackgroundImage = (Image)resources.GetObject("picturePerf.BackgroundImage");
this.picturePerf.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; picturePerf.BackgroundImageLayout = ImageLayout.Zoom;
this.picturePerf.InitialImage = null; picturePerf.InitialImage = null;
this.picturePerf.Location = new System.Drawing.Point(33, 36); picturePerf.Location = new Point(33, 36);
this.picturePerf.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2); picturePerf.Margin = new Padding(4, 2, 4, 2);
this.picturePerf.Name = "picturePerf"; picturePerf.Name = "picturePerf";
this.picturePerf.Size = new System.Drawing.Size(38, 38); picturePerf.Size = new Size(37, 38);
this.picturePerf.TabIndex = 14; picturePerf.TabIndex = 14;
this.picturePerf.TabStop = false; picturePerf.TabStop = false;
// //
// labelPerf // labelPerf
// //
this.labelPerf.AutoSize = true; labelPerf.AutoSize = true;
this.labelPerf.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); labelPerf.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
this.labelPerf.Location = new System.Drawing.Point(77, 38); labelPerf.Location = new Point(76, 38);
this.labelPerf.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); labelPerf.Margin = new Padding(4, 0, 4, 0);
this.labelPerf.Name = "labelPerf"; labelPerf.Name = "labelPerf";
this.labelPerf.Size = new System.Drawing.Size(234, 32); labelPerf.Size = new Size(234, 32);
this.labelPerf.TabIndex = 13; labelPerf.TabIndex = 13;
this.labelPerf.Text = "Performance Mode"; labelPerf.Text = "Performance Mode";
// //
// checkGPU // checkGPU
// //
this.checkGPU.AutoSize = true; checkGPU.AutoSize = true;
this.checkGPU.ForeColor = System.Drawing.SystemColors.GrayText; checkGPU.ForeColor = SystemColors.GrayText;
this.checkGPU.Location = new System.Drawing.Point(33, 411); checkGPU.Location = new Point(33, 412);
this.checkGPU.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2); checkGPU.Margin = new Padding(4, 2, 4, 2);
this.checkGPU.Name = "checkGPU"; checkGPU.Name = "checkGPU";
this.checkGPU.Size = new System.Drawing.Size(550, 36); checkGPU.Size = new Size(550, 36);
this.checkGPU.TabIndex = 15; checkGPU.TabIndex = 15;
this.checkGPU.Text = "Set Eco on battery and Standard when plugged"; checkGPU.Text = "Set Eco on battery and Standard when plugged";
this.checkGPU.UseVisualStyleBackColor = true; checkGPU.UseVisualStyleBackColor = true;
this.checkGPU.CheckedChanged += new System.EventHandler(this.checkGPU_CheckedChanged); checkGPU.CheckedChanged += checkGPU_CheckedChanged;
// //
// buttonQuit // buttonQuit
// //
this.buttonQuit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); buttonQuit.Anchor = AnchorStyles.Top | AnchorStyles.Right;
this.buttonQuit.BackColor = System.Drawing.SystemColors.ButtonFace; buttonQuit.BackColor = SystemColors.ButtonFace;
this.buttonQuit.Location = new System.Drawing.Point(591, 1011); buttonQuit.Location = new Point(574, 1011);
this.buttonQuit.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2); buttonQuit.Margin = new Padding(4, 2, 4, 2);
this.buttonQuit.Name = "buttonQuit"; buttonQuit.Name = "buttonQuit";
this.buttonQuit.Size = new System.Drawing.Size(121, 47); buttonQuit.Size = new Size(121, 47);
this.buttonQuit.TabIndex = 16; buttonQuit.TabIndex = 16;
this.buttonQuit.Text = "Quit"; buttonQuit.Text = "Quit";
this.buttonQuit.UseVisualStyleBackColor = false; buttonQuit.UseVisualStyleBackColor = false;
// //
// pictureScreen // pictureScreen
// //
this.pictureScreen.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureScreen.BackgroundImage"))); pictureScreen.BackgroundImage = (Image)resources.GetObject("pictureScreen.BackgroundImage");
this.pictureScreen.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; pictureScreen.BackgroundImageLayout = ImageLayout.Zoom;
this.pictureScreen.Location = new System.Drawing.Point(33, 496); pictureScreen.Location = new Point(33, 495);
this.pictureScreen.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2); pictureScreen.Margin = new Padding(4, 2, 4, 2);
this.pictureScreen.Name = "pictureScreen"; pictureScreen.Name = "pictureScreen";
this.pictureScreen.Size = new System.Drawing.Size(38, 38); pictureScreen.Size = new Size(37, 38);
this.pictureScreen.TabIndex = 18; pictureScreen.TabIndex = 18;
this.pictureScreen.TabStop = false; pictureScreen.TabStop = false;
// //
// labelSreen // labelSreen
// //
this.labelSreen.AutoSize = true; labelSreen.AutoSize = true;
this.labelSreen.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); labelSreen.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
this.labelSreen.Location = new System.Drawing.Point(77, 496); labelSreen.Location = new Point(76, 495);
this.labelSreen.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); labelSreen.Margin = new Padding(4, 0, 4, 0);
this.labelSreen.Name = "labelSreen"; labelSreen.Name = "labelSreen";
this.labelSreen.Size = new System.Drawing.Size(176, 32); labelSreen.Size = new Size(176, 32);
this.labelSreen.TabIndex = 17; labelSreen.TabIndex = 17;
this.labelSreen.Text = "Laptop Screen"; labelSreen.Text = "Laptop Screen";
// //
// tableScreen // tableScreen
// //
this.tableScreen.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) tableScreen.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
| System.Windows.Forms.AnchorStyles.Right))); tableScreen.ColumnCount = 3;
this.tableScreen.ColumnCount = 3; tableScreen.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F));
this.tableScreen.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); tableScreen.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F));
this.tableScreen.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); tableScreen.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F));
this.tableScreen.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); tableScreen.Controls.Add(button120Hz, 1, 0);
this.tableScreen.Controls.Add(this.button120Hz, 1, 0); tableScreen.Controls.Add(button60Hz, 0, 0);
this.tableScreen.Controls.Add(this.button60Hz, 0, 0); tableScreen.Location = new Point(22, 535);
this.tableScreen.Location = new System.Drawing.Point(22, 536); tableScreen.Margin = new Padding(4, 2, 4, 2);
this.tableScreen.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2); tableScreen.Name = "tableScreen";
this.tableScreen.Name = "tableScreen"; tableScreen.RowCount = 1;
this.tableScreen.RowCount = 1; tableScreen.RowStyles.Add(new RowStyle(SizeType.Absolute, 107F));
this.tableScreen.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 107F)); tableScreen.Size = new Size(674, 107);
this.tableScreen.Size = new System.Drawing.Size(690, 102); tableScreen.TabIndex = 19;
this.tableScreen.TabIndex = 19;
// //
// button120Hz // button120Hz
// //
this.button120Hz.BackColor = System.Drawing.SystemColors.ControlLightLight; button120Hz.BackColor = SystemColors.ControlLightLight;
this.button120Hz.Dock = System.Windows.Forms.DockStyle.Fill; button120Hz.Dock = DockStyle.Fill;
this.button120Hz.FlatAppearance.BorderColor = System.Drawing.SystemColors.ActiveBorder; button120Hz.FlatAppearance.BorderColor = SystemColors.ActiveBorder;
this.button120Hz.FlatAppearance.BorderSize = 0; button120Hz.FlatAppearance.BorderSize = 0;
this.button120Hz.FlatStyle = System.Windows.Forms.FlatStyle.Flat; button120Hz.FlatStyle = FlatStyle.Flat;
this.button120Hz.Location = new System.Drawing.Point(239, 11); button120Hz.Location = new Point(233, 11);
this.button120Hz.Margin = new System.Windows.Forms.Padding(9, 11, 9, 11); button120Hz.Margin = new Padding(9, 11, 9, 11);
this.button120Hz.Name = "button120Hz"; button120Hz.Name = "button120Hz";
this.button120Hz.Size = new System.Drawing.Size(212, 85); button120Hz.Size = new Size(206, 85);
this.button120Hz.TabIndex = 1; button120Hz.TabIndex = 1;
this.button120Hz.Text = "120Hz + OD"; button120Hz.Text = "120Hz + OD";
this.button120Hz.UseVisualStyleBackColor = false; button120Hz.UseVisualStyleBackColor = false;
// //
// button60Hz // button60Hz
// //
this.button60Hz.BackColor = System.Drawing.SystemColors.ControlLightLight; button60Hz.BackColor = SystemColors.ControlLightLight;
this.button60Hz.CausesValidation = false; button60Hz.CausesValidation = false;
this.button60Hz.Dock = System.Windows.Forms.DockStyle.Fill; button60Hz.Dock = DockStyle.Fill;
this.button60Hz.FlatAppearance.BorderColor = System.Drawing.SystemColors.ActiveBorder; button60Hz.FlatAppearance.BorderColor = SystemColors.ActiveBorder;
this.button60Hz.FlatAppearance.BorderSize = 0; button60Hz.FlatAppearance.BorderSize = 0;
this.button60Hz.FlatStyle = System.Windows.Forms.FlatStyle.Flat; button60Hz.FlatStyle = FlatStyle.Flat;
this.button60Hz.ForeColor = System.Drawing.SystemColors.ControlText; button60Hz.ForeColor = SystemColors.ControlText;
this.button60Hz.Location = new System.Drawing.Point(9, 11); button60Hz.Location = new Point(9, 11);
this.button60Hz.Margin = new System.Windows.Forms.Padding(9, 11, 9, 11); button60Hz.Margin = new Padding(9, 11, 9, 11);
this.button60Hz.Name = "button60Hz"; button60Hz.Name = "button60Hz";
this.button60Hz.Size = new System.Drawing.Size(212, 85); button60Hz.Size = new Size(206, 85);
this.button60Hz.TabIndex = 0; button60Hz.TabIndex = 0;
this.button60Hz.Text = "60Hz"; button60Hz.Text = "60Hz";
this.button60Hz.UseVisualStyleBackColor = false; button60Hz.UseVisualStyleBackColor = false;
// //
// checkScreen // checkScreen
// //
this.checkScreen.AutoSize = true; checkScreen.AutoSize = true;
this.checkScreen.ForeColor = System.Drawing.SystemColors.GrayText; checkScreen.ForeColor = SystemColors.GrayText;
this.checkScreen.Location = new System.Drawing.Point(33, 639); checkScreen.Location = new Point(33, 644);
this.checkScreen.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2); checkScreen.Margin = new Padding(4, 2, 4, 2);
this.checkScreen.Name = "checkScreen"; checkScreen.Name = "checkScreen";
this.checkScreen.Size = new System.Drawing.Size(527, 36); checkScreen.Size = new Size(527, 36);
this.checkScreen.TabIndex = 20; checkScreen.TabIndex = 20;
this.checkScreen.Text = "Set 60Hz on battery, and back when plugged"; checkScreen.Text = "Set 60Hz on battery, and back when plugged";
this.checkScreen.UseVisualStyleBackColor = true; checkScreen.UseVisualStyleBackColor = true;
// //
// checkBoost // checkBoost
// //
this.checkBoost.AutoSize = true; checkBoost.AutoSize = true;
this.checkBoost.ForeColor = System.Drawing.SystemColors.GrayText; checkBoost.ForeColor = SystemColors.GrayText;
this.checkBoost.Location = new System.Drawing.Point(33, 184); checkBoost.Location = new Point(33, 184);
this.checkBoost.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2); checkBoost.Margin = new Padding(4, 2, 4, 2);
this.checkBoost.Name = "checkBoost"; checkBoost.Name = "checkBoost";
this.checkBoost.Size = new System.Drawing.Size(250, 36); checkBoost.Size = new Size(250, 36);
this.checkBoost.TabIndex = 21; checkBoost.TabIndex = 21;
this.checkBoost.Text = "CPU Boost enabled"; checkBoost.Text = "CPU Boost enabled";
this.checkBoost.UseVisualStyleBackColor = true; checkBoost.UseVisualStyleBackColor = true;
// //
// pictureBox1 // pictureBox1
// //
this.pictureBox1.BackgroundImage = global::GHelper.Properties.Resources.icons8_keyboard_48; pictureBox1.BackgroundImage = Properties.Resources.icons8_keyboard_48;
this.pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; pictureBox1.BackgroundImageLayout = ImageLayout.Zoom;
this.pictureBox1.Location = new System.Drawing.Point(33, 725); pictureBox1.Location = new Point(33, 725);
this.pictureBox1.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2); pictureBox1.Margin = new Padding(4, 2, 4, 2);
this.pictureBox1.Name = "pictureBox1"; pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(36, 36); pictureBox1.Size = new Size(35, 36);
this.pictureBox1.TabIndex = 23; pictureBox1.TabIndex = 23;
this.pictureBox1.TabStop = false; pictureBox1.TabStop = false;
// //
// label1 // label1
// //
this.label1.AutoSize = true; label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point); label1.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
this.label1.Location = new System.Drawing.Point(77, 726); label1.Location = new Point(76, 725);
this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); label1.Margin = new Padding(4, 0, 4, 0);
this.label1.Name = "label1"; label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(210, 32); label1.Size = new Size(210, 32);
this.label1.TabIndex = 22; label1.TabIndex = 22;
this.label1.Text = "Laptop Keyboard"; label1.Text = "Laptop Keyboard";
// //
// comboKeyboard // comboKeyboard
// //
this.comboKeyboard.FlatStyle = System.Windows.Forms.FlatStyle.Flat; comboKeyboard.FlatStyle = FlatStyle.Flat;
this.comboKeyboard.FormattingEnabled = true; comboKeyboard.Font = new Font("Segoe UI", 10F, FontStyle.Regular, GraphicsUnit.Point);
this.comboKeyboard.ItemHeight = 32; comboKeyboard.FormattingEnabled = true;
this.comboKeyboard.Items.AddRange(new object[] { comboKeyboard.ItemHeight = 37;
"Static", comboKeyboard.Items.AddRange(new object[] { "Static", "Breathe", "Strobe", "Rainbow" });
"Breathe", comboKeyboard.Location = new Point(37, 777);
"Strobe", comboKeyboard.Margin = new Padding(0);
"Rainbow"}); comboKeyboard.Name = "comboKeyboard";
this.comboKeyboard.Location = new System.Drawing.Point(38, 778); comboKeyboard.Size = new Size(201, 45);
this.comboKeyboard.Margin = new System.Windows.Forms.Padding(0); comboKeyboard.TabIndex = 24;
this.comboKeyboard.Name = "comboKeyboard"; comboKeyboard.TabStop = false;
this.comboKeyboard.Size = new System.Drawing.Size(200, 40);
this.comboKeyboard.TabIndex = 24;
this.comboKeyboard.TabStop = false;
// //
// buttonKeyboardColor // buttonKeyboardColor
// //
this.buttonKeyboardColor.BackColor = System.Drawing.SystemColors.ButtonHighlight; buttonKeyboardColor.AutoSize = true;
this.buttonKeyboardColor.FlatAppearance.BorderColor = System.Drawing.Color.Red; buttonKeyboardColor.BackColor = SystemColors.ButtonHighlight;
this.buttonKeyboardColor.FlatAppearance.BorderSize = 3; buttonKeyboardColor.FlatAppearance.BorderColor = Color.Red;
this.buttonKeyboardColor.FlatStyle = System.Windows.Forms.FlatStyle.Flat; buttonKeyboardColor.FlatAppearance.BorderSize = 2;
this.buttonKeyboardColor.ForeColor = System.Drawing.SystemColors.ControlText; buttonKeyboardColor.FlatStyle = FlatStyle.Flat;
this.buttonKeyboardColor.Location = new System.Drawing.Point(261, 773); buttonKeyboardColor.ForeColor = SystemColors.ControlText;
this.buttonKeyboardColor.Margin = new System.Windows.Forms.Padding(0); buttonKeyboardColor.Location = new Point(256, 775);
this.buttonKeyboardColor.Name = "buttonKeyboardColor"; buttonKeyboardColor.Margin = new Padding(0);
this.buttonKeyboardColor.Size = new System.Drawing.Size(212, 50); buttonKeyboardColor.Name = "buttonKeyboardColor";
this.buttonKeyboardColor.TabIndex = 25; buttonKeyboardColor.Size = new Size(212, 50);
this.buttonKeyboardColor.Text = "Color"; buttonKeyboardColor.TabIndex = 25;
this.buttonKeyboardColor.UseVisualStyleBackColor = false; buttonKeyboardColor.Text = "Color";
// buttonKeyboardColor.UseVisualStyleBackColor = false;
// pictureBox2
//
this.pictureBox2.BackColor = System.Drawing.SystemColors.ControlLightLight;
this.pictureBox2.Location = new System.Drawing.Point(32, 773);
this.pictureBox2.Name = "pictureBox2";
this.pictureBox2.Size = new System.Drawing.Size(212, 50);
this.pictureBox2.TabIndex = 26;
this.pictureBox2.TabStop = false;
// //
// labelBattery // labelBattery
// //
this.labelBattery.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); labelBattery.Anchor = AnchorStyles.Top | AnchorStyles.Right;
this.labelBattery.Location = new System.Drawing.Point(425, 869); labelBattery.Location = new Point(409, 868);
this.labelBattery.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); labelBattery.Margin = new Padding(4, 0, 4, 0);
this.labelBattery.Name = "labelBattery"; labelBattery.Name = "labelBattery";
this.labelBattery.Size = new System.Drawing.Size(277, 32); labelBattery.Size = new Size(277, 32);
this.labelBattery.TabIndex = 27; labelBattery.TabIndex = 27;
this.labelBattery.Text = " "; labelBattery.Text = " ";
this.labelBattery.TextAlign = System.Drawing.ContentAlignment.TopRight; labelBattery.TextAlign = ContentAlignment.TopRight;
//
// buttonFans
//
buttonFans.Anchor = AnchorStyles.Top | AnchorStyles.Right;
buttonFans.BackColor = SystemColors.ButtonFace;
buttonFans.Location = new Point(525, 186);
buttonFans.Margin = new Padding(4, 2, 4, 2);
buttonFans.Name = "buttonFans";
buttonFans.Size = new Size(165, 47);
buttonFans.TabIndex = 28;
buttonFans.Text = "Fan Profile";
buttonFans.UseVisualStyleBackColor = false;
// //
// SettingsForm // SettingsForm
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(13F, 32F); AutoScaleDimensions = new SizeF(13F, 32F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; AutoScaleMode = AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(744, 1093); ClientSize = new Size(728, 1079);
this.Controls.Add(this.labelBattery); Controls.Add(buttonFans);
this.Controls.Add(this.buttonKeyboardColor); Controls.Add(labelBattery);
this.Controls.Add(this.comboKeyboard); Controls.Add(buttonKeyboardColor);
this.Controls.Add(this.pictureBox1); Controls.Add(comboKeyboard);
this.Controls.Add(this.label1); Controls.Add(pictureBox1);
this.Controls.Add(this.checkBoost); Controls.Add(label1);
this.Controls.Add(this.checkScreen); Controls.Add(checkBoost);
this.Controls.Add(this.tableScreen); Controls.Add(checkScreen);
this.Controls.Add(this.pictureScreen); Controls.Add(tableScreen);
this.Controls.Add(this.labelSreen); Controls.Add(pictureScreen);
this.Controls.Add(this.buttonQuit); Controls.Add(labelSreen);
this.Controls.Add(this.checkGPU); Controls.Add(buttonQuit);
this.Controls.Add(this.picturePerf); Controls.Add(checkGPU);
this.Controls.Add(this.labelPerf); Controls.Add(picturePerf);
this.Controls.Add(this.labelCPUFan); Controls.Add(labelPerf);
this.Controls.Add(this.tablePerf); Controls.Add(labelCPUFan);
this.Controls.Add(this.pictureGPU); Controls.Add(tablePerf);
this.Controls.Add(this.labelGPU); Controls.Add(pictureGPU);
this.Controls.Add(this.labelGPUFan); Controls.Add(labelGPU);
this.Controls.Add(this.tableGPU); Controls.Add(labelGPUFan);
this.Controls.Add(this.pictureBattery); Controls.Add(tableGPU);
this.Controls.Add(this.labelBatteryTitle); Controls.Add(pictureBattery);
this.Controls.Add(this.trackBattery); Controls.Add(labelBatteryTitle);
this.Controls.Add(this.checkStartup); Controls.Add(trackBattery);
this.Controls.Add(this.pictureBox2); Controls.Add(checkStartup);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; FormBorderStyle = FormBorderStyle.FixedSingle;
this.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2); Margin = new Padding(4, 2, 4, 2);
this.MaximizeBox = false; MaximizeBox = false;
this.MdiChildrenMinimizedAnchorBottom = false; MdiChildrenMinimizedAnchorBottom = false;
this.MinimizeBox = false; MinimizeBox = false;
this.Name = "SettingsForm"; Name = "SettingsForm";
this.Padding = new System.Windows.Forms.Padding(9, 11, 9, 11); Padding = new Padding(9, 11, 9, 11);
this.ShowIcon = false; ShowIcon = false;
this.ShowInTaskbar = false; StartPosition = FormStartPosition.CenterScreen;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; Text = "G-Helper";
this.Text = "G-Helper"; Load += Settings_Load;
this.Load += new System.EventHandler(this.Settings_Load); ((System.ComponentModel.ISupportInitialize)trackBattery).EndInit();
((System.ComponentModel.ISupportInitialize)(this.trackBattery)).EndInit(); ((System.ComponentModel.ISupportInitialize)pictureBattery).EndInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBattery)).EndInit(); tableGPU.ResumeLayout(false);
this.tableGPU.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)pictureGPU).EndInit();
((System.ComponentModel.ISupportInitialize)(this.pictureGPU)).EndInit(); tablePerf.ResumeLayout(false);
this.tablePerf.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)picturePerf).EndInit();
((System.ComponentModel.ISupportInitialize)(this.picturePerf)).EndInit(); ((System.ComponentModel.ISupportInitialize)pictureScreen).EndInit();
((System.ComponentModel.ISupportInitialize)(this.pictureScreen)).EndInit(); tableScreen.ResumeLayout(false);
this.tableScreen.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
} }
#endregion #endregion
@@ -603,7 +596,7 @@
private Label label1; private Label label1;
private ComboBox comboKeyboard; private ComboBox comboKeyboard;
private Button buttonKeyboardColor; private Button buttonKeyboardColor;
private PictureBox pictureBox2;
private Label labelBattery; private Label labelBattery;
private Button buttonFans;
} }
} }

View File

@@ -17,6 +17,8 @@ namespace GHelper
static System.Timers.Timer aTimer = default!; static System.Timers.Timer aTimer = default!;
Fans fans;
public SettingsForm() public SettingsForm()
{ {
@@ -60,13 +62,33 @@ namespace GHelper
buttonKeyboardColor.Click += ButtonKeyboardColor_Click; buttonKeyboardColor.Click += ButtonKeyboardColor_Click;
buttonFans.Click += ButtonFans_Click;
SetTimer(); SetTimer();
}
private void ButtonFans_Click(object? sender, EventArgs e)
{
if (fans == null || fans.Text == "")
{
fans = new Fans();
fans.Show();
} else
{
fans.Close();
}
} }
private void ButtonKeyboardColor_Click(object? sender, EventArgs e) private void ButtonKeyboardColor_Click(object? sender, EventArgs e)
{ {
if (sender is null)
return;
Button but = (Button)sender; Button but = (Button)sender;
ColorDialog colorDlg = new ColorDialog(); ColorDialog colorDlg = new ColorDialog();
@@ -141,6 +163,9 @@ namespace GHelper
private void ComboKeyboard_SelectedValueChanged(object? sender, EventArgs e) private void ComboKeyboard_SelectedValueChanged(object? sender, EventArgs e)
{ {
if (sender is null)
return;
ComboBox cmb = (ComboBox)sender; ComboBox cmb = (ComboBox)sender;
SetAuraMode(cmb.SelectedIndex); SetAuraMode(cmb.SelectedIndex);
} }
@@ -148,6 +173,9 @@ namespace GHelper
private void CheckBoost_Click(object? sender, EventArgs e) private void CheckBoost_Click(object? sender, EventArgs e)
{ {
if (sender is null)
return;
CheckBox chk = (CheckBox)sender; CheckBox chk = (CheckBox)sender;
if (chk.Checked) if (chk.Checked)
NativeMethods.SetCPUBoost(3); NativeMethods.SetCPUBoost(3);
@@ -403,6 +431,9 @@ namespace GHelper
labelPerf.Text = "Performance Mode: not supported"; labelPerf.Text = "Performance Mode: not supported";
} }
if (fans != null && fans.Text != "")
fans.LoadFans();
} }
@@ -611,11 +642,11 @@ namespace GHelper
CheckBox chk = (CheckBox)sender; CheckBox chk = (CheckBox)sender;
if (chk.Checked) if (chk.Checked)
{ {
Program.scheduler.Schedule(); Startup.Schedule();
} }
else else
{ {
Program.scheduler.UnSchedule(); Startup.UnSchedule();
} }
} }
@@ -638,14 +669,20 @@ namespace GHelper
} }
private void trackBatteryChange(object sender, EventArgs e) private void trackBatteryChange(object? sender, EventArgs e)
{ {
if (sender is null)
return;
TrackBar bar = (TrackBar)sender; TrackBar bar = (TrackBar)sender;
SetBatteryChargeLimit(bar.Value); SetBatteryChargeLimit(bar.Value);
} }
private void checkGPU_CheckedChanged(object sender, EventArgs e) private void checkGPU_CheckedChanged(object? sender, EventArgs e)
{ {
if (sender is null)
return;
CheckBox chk = (CheckBox)sender; CheckBox chk = (CheckBox)sender;
if (chk.Checked) if (chk.Checked)
Program.config.setConfig("gpu_auto", 1); Program.config.setConfig("gpu_auto", 1);
@@ -654,8 +691,12 @@ namespace GHelper
} }
private void checkScreen_CheckedChanged(object sender, EventArgs e) private void checkScreen_CheckedChanged(object? sender, EventArgs e)
{ {
if (sender is null)
return;
CheckBox chk = (CheckBox)sender; CheckBox chk = (CheckBox)sender;
if (chk.Checked) if (chk.Checked)
Program.config.setConfig("screen_auto", 1); Program.config.setConfig("screen_auto", 1);

42
Startup.cs Normal file
View File

@@ -0,0 +1,42 @@
using Microsoft.Win32.TaskScheduler;
using System.Diagnostics;
using System.Security.Principal;
public class Startup
{
static string taskName = "GHelper";
public static bool IsScheduled()
{
TaskService taskService = new TaskService();
return (taskService.RootFolder.AllTasks.Any(t => t.Name == taskName));
}
public static void Schedule()
{
string strExeFilePath = Application.ExecutablePath;
if (strExeFilePath is null) return;
var userId = WindowsIdentity.GetCurrent().Name;
Debug.WriteLine(strExeFilePath);
TaskDefinition td = TaskService.Instance.NewTask();
td.RegistrationInfo.Description = "GHelper Auto Start";
td.Triggers.Add(new LogonTrigger { UserId = userId, });
td.Actions.Add(strExeFilePath);
td.Settings.StopIfGoingOnBatteries = false;
td.Settings.DisallowStartIfOnBatteries = false;
TaskService.Instance.RootFolder.RegisterTaskDefinition(taskName, td);
}
public static void UnSchedule()
{
TaskService taskService = new TaskService();
taskService.RootFolder.DeleteTask(taskName);
}
}

View File

@@ -53,13 +53,16 @@
Makes the application long-path aware. See https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation --> Makes the application long-path aware. See https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation -->
<application xmlns="urn:schemas-microsoft-com:asm.v3"> <application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings> <windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware> <!--<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitor/dpiAwareness>-->
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware> <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2, PerMonitor, System</dpiAwareness>
</windowsSettings> <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</application> </windowsSettings>
</application>
<!-- Enable themes for Windows common controls and dialogs (Windows XP and later) --> <!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
<dependency> <dependency>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity <assemblyIdentity