Compare commits

...

9 Commits
v0.23 ... v0.25

Author SHA1 Message Date
seerge
a7e8ba3241 Scheduler warning 2023-03-13 12:10:29 +01:00
seerge
b46f0fb887 Removed scheduler call on each run 2023-03-13 11:38:54 +01:00
seerge
a39c084bdf Merge branch 'main' of https://github.com/seerge/g14-helper 2023-03-12 16:16:35 +01:00
seerge
f0c291bea4 Minor tweaks 2023-03-12 16:16:32 +01:00
seerge
d04a20367b Update README.md 2023-03-12 13:36:09 +01:00
seerge
888e49fe40 Update README.md 2023-03-12 13:35:40 +01:00
seerge
4875a22f38 Merge branch 'main' of https://github.com/seerge/g14-helper 2023-03-12 13:27:55 +01:00
seerge
ea2e8a7c24 UI Tweaks 2023-03-12 13:27:44 +01:00
seerge
6ec94e4ac3 Update README.md 2023-03-11 14:28:17 +01:00
10 changed files with 109 additions and 24 deletions

55
Fans.Designer.cs generated
View File

@@ -28,9 +28,10 @@
/// </summary>
private void InitializeComponent()
{
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();
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
panelFans = new Panel();
picturePerf = new PictureBox();
tableFanCharts = new TableLayoutPanel();
chartGPU = new System.Windows.Forms.DataVisualization.Charting.Chart();
chartCPU = new System.Windows.Forms.DataVisualization.Charting.Chart();
@@ -40,6 +41,7 @@
buttonReset = new Button();
buttonApply = new Button();
panelPower = new Panel();
pictureBox1 = new PictureBox();
labelPowerLimits = new Label();
checkApplyPower = new CheckBox();
buttonApplyPower = new Button();
@@ -55,10 +57,12 @@
pictureFine = new PictureBox();
labelInfo = new Label();
panelFans.SuspendLayout();
((System.ComponentModel.ISupportInitialize)picturePerf).BeginInit();
tableFanCharts.SuspendLayout();
((System.ComponentModel.ISupportInitialize)chartGPU).BeginInit();
((System.ComponentModel.ISupportInitialize)chartCPU).BeginInit();
panelPower.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();
panelCPU.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackCPU).BeginInit();
panelTotal.SuspendLayout();
@@ -68,6 +72,7 @@
//
// panelFans
//
panelFans.Controls.Add(picturePerf);
panelFans.Controls.Add(tableFanCharts);
panelFans.Controls.Add(checkBoost);
panelFans.Controls.Add(labelFans);
@@ -77,12 +82,23 @@
panelFans.Dock = DockStyle.Left;
panelFans.Location = new Point(364, 0);
panelFans.Margin = new Padding(0);
panelFans.MinimumSize = new Size(824, 1098);
panelFans.Name = "panelFans";
panelFans.Padding = new Padding(20);
panelFans.Size = new Size(824, 1159);
panelFans.TabIndex = 12;
//
// picturePerf
//
picturePerf.BackgroundImage = Properties.Resources.icons8_fan_head_96;
picturePerf.BackgroundImageLayout = ImageLayout.Zoom;
picturePerf.InitialImage = null;
picturePerf.Location = new Point(30, 18);
picturePerf.Margin = new Padding(4, 2, 4, 2);
picturePerf.Name = "picturePerf";
picturePerf.Size = new Size(36, 38);
picturePerf.TabIndex = 37;
picturePerf.TabStop = false;
//
// tableFanCharts
//
tableFanCharts.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
@@ -103,8 +119,8 @@
//
// chartGPU
//
chartArea3.Name = "ChartArea1";
chartGPU.ChartAreas.Add(chartArea3);
chartArea1.Name = "ChartArea1";
chartGPU.ChartAreas.Add(chartArea1);
chartGPU.Dock = DockStyle.Fill;
chartGPU.Location = new Point(2, 504);
chartGPU.Margin = new Padding(2, 10, 2, 10);
@@ -115,8 +131,8 @@
//
// chartCPU
//
chartArea4.Name = "ChartArea1";
chartCPU.ChartAreas.Add(chartArea4);
chartArea2.Name = "ChartArea1";
chartCPU.ChartAreas.Add(chartArea2);
chartCPU.Dock = DockStyle.Fill;
chartCPU.Location = new Point(2, 10);
chartCPU.Margin = new Padding(2, 10, 2, 10);
@@ -141,7 +157,7 @@
//
labelFans.AutoSize = true;
labelFans.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelFans.Location = new Point(28, 20);
labelFans.Location = new Point(66, 20);
labelFans.Margin = new Padding(4, 0, 4, 0);
labelFans.Name = "labelFans";
labelFans.Size = new Size(138, 32);
@@ -184,6 +200,7 @@
//
// panelPower
//
panelPower.Controls.Add(pictureBox1);
panelPower.Controls.Add(labelPowerLimits);
panelPower.Controls.Add(checkApplyPower);
panelPower.Controls.Add(buttonApplyPower);
@@ -200,11 +217,23 @@
panelPower.Size = new Size(364, 1159);
panelPower.TabIndex = 13;
//
// pictureBox1
//
pictureBox1.BackgroundImage = Properties.Resources.icons8_processor_96;
pictureBox1.BackgroundImageLayout = ImageLayout.Zoom;
pictureBox1.InitialImage = null;
pictureBox1.Location = new Point(20, 18);
pictureBox1.Margin = new Padding(4, 2, 4, 2);
pictureBox1.Name = "pictureBox1";
pictureBox1.Size = new Size(36, 38);
pictureBox1.TabIndex = 38;
pictureBox1.TabStop = false;
//
// labelPowerLimits
//
labelPowerLimits.AutoSize = true;
labelPowerLimits.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelPowerLimits.Location = new Point(24, 20);
labelPowerLimits.Location = new Point(54, 20);
labelPowerLimits.Margin = new Padding(4, 0, 4, 0);
labelPowerLimits.Name = "labelPowerLimits";
labelPowerLimits.Size = new Size(229, 32);
@@ -333,7 +362,7 @@
//
labelApplied.AutoSize = true;
labelApplied.ForeColor = Color.Tomato;
labelApplied.Location = new Point(24, 54);
labelApplied.Location = new Point(56, 48);
labelApplied.Margin = new Padding(4, 0, 4, 0);
labelApplied.Name = "labelApplied";
labelApplied.Size = new Size(143, 32);
@@ -369,7 +398,7 @@
AutoScaleMode = AutoScaleMode.Dpi;
AutoSize = true;
AutoSizeMode = AutoSizeMode.GrowAndShrink;
ClientSize = new Size(1188, 1159);
ClientSize = new Size(1178, 1159);
Controls.Add(panelFans);
Controls.Add(panelPower);
Margin = new Padding(4, 2, 4, 2);
@@ -384,11 +413,13 @@
Text = "Fans and Power";
panelFans.ResumeLayout(false);
panelFans.PerformLayout();
((System.ComponentModel.ISupportInitialize)picturePerf).EndInit();
tableFanCharts.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)chartGPU).EndInit();
((System.ComponentModel.ISupportInitialize)chartCPU).EndInit();
panelPower.ResumeLayout(false);
panelPower.PerformLayout();
((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();
panelCPU.ResumeLayout(false);
panelCPU.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackCPU).EndInit();
@@ -424,5 +455,7 @@
private System.Windows.Forms.DataVisualization.Charting.Chart chartCPU;
private CheckBox checkBoost;
private Label labelFans;
private PictureBox picturePerf;
private PictureBox pictureBox1;
}
}

View File

@@ -16,7 +16,7 @@
<PlatformTarget>x64</PlatformTarget>
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<AssemblyVersion>0.23</AssemblyVersion>
<AssemblyVersion>0.25</AssemblyVersion>
</PropertyGroup>
<ItemGroup>

View File

@@ -485,23 +485,33 @@ public class NativeMethods
try
{
var devices = GetAllDevices();
var devices = GetAllDevices().ToArray();
int count = 0, displayNum = -1;
foreach (var device in devices)
{
if (device.outputTechnology == DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL)
{
displayNum = count;
}
count++;
//Debug.WriteLine(device.outputTechnology);
//Debug.WriteLine(device.monitorFriendlyDeviceName);
}
if (Screen.AllScreens.Length != count)
{
Debug.WriteLine("Mismatch between enumerated and available screens");
return null;
}
count = 0;
foreach (var screen in Screen.AllScreens)
{
if (count == displayNum)
{
laptopScreen = screen.DeviceName;
}
//Debug.WriteLine(screen.DeviceName);
count++;
}

View File

@@ -144,6 +144,10 @@ namespace GHelper
case PBT_APMRESUMEAUTOMATIC:
settingsForm.BeginInvoke(delegate
{
// Fix for bugging buios on wake up
Program.wmi.DeviceSet(ASUSWmi.PerformanceMode, (config.getConfig("performance_mode")+1) % 3);
Thread.Sleep(500);
SetAutoModes();
});
break;

View File

@@ -130,6 +130,16 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_processor_96 {
get {
object obj = ResourceManager.GetObject("icons8-processor-96", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>

View File

@@ -121,6 +121,9 @@
<data name="eco" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\eco.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8-matrix-desktop-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-matrix-desktop-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8-keyboard-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-keyboard-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@@ -151,7 +154,7 @@
<data name="icons8-laptop-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-laptop-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8-matrix-desktop-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-matrix-desktop-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="icons8-processor-96" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-processor-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@@ -9,7 +9,7 @@ A small utility that allows you do almost everyting you could do with Armory Cra
## NEW (and experimental) features
1. Set Power limits (PPT) for Total (APU + dGPU) and CPU.
2. Anime matrix control thanks to https://github.com/vddCore/Starlight
2. Anime matrix control thanks to [Starlight](https://github.com/vddCore/Starlight) + some tweaks from my side
## Main features
@@ -29,8 +29,6 @@ Designed and developed for Asus Zephyrus G14 2022 (with AMD Radeon iGPU and dGPU
To keep autoswitching and hotkeys work app needs to stay in running in tray. It doesn't consume any resources.
I recommend to keep "Asus Optimization Service" running, as it keeps basic laptop hotkeys such as screen or keyboard brightness adjustment working. If you have (or had) MyASUS app installed, that service is most probably still up an running even after MyASUS uninstall. It's part of [Asus System Controll Interface](https://www.asus.com/support/FAQ/1047338/). You can install it, and later disable / remove unnecesarily services by running [this bat file](https://raw.githubusercontent.com/seerge/g-helper/main/stop-asus-sv.bat ) as admin.
## Performance Profile switching
Profiles are **same** as in Armory Crate (as they are stored in bios), including default fan curves
@@ -49,10 +47,14 @@ PPTs are shown for G14 2022, for other models PPTs will be different as they are
## How to install
1. Download latest release from https://github.com/seerge/g-helper/releases
1. Download latest release from [**Releases Page**](https://github.com/seerge/g-helper/releases)
2. Unzip to a folder of your choice
3. Run **GHelper.exe**
App requires [.NET7](https://dotnet.microsoft.com/en-us/download) to be installed. Most probably you already have it. Otherwise you can [download it](https://dotnet.microsoft.com/en-us/download).
I recommend to keep "Asus Optimization Service" running, as it keeps basic laptop hotkeys such as screen or keyboard brightness adjustment working. If you have (or had) MyASUS app installed, that service is most probably still up an running even after MyASUS uninstall. It's part of [Asus System Controll Interface](https://www.asus.com/support/FAQ/1047338/). You can install it, and later disable / remove unnecesarily services by running [this bat file](https://raw.githubusercontent.com/seerge/g-helper/main/stop-asus-sv.bat) as admin.
Note: Uses low level ASUS ACPI commands and doens't require Armory Crate to be installed at all! Doesn't need administrator privileges to run!
I don`t have Microsoft certificate to sign app yet, so if you get a warning from Windows Defender on launch (Windows Protected your PC), click More Info -> Run anyway. Alternatively you can compile and run project by yourself using Visual Studio :)
@@ -66,3 +68,10 @@ P.S.: It's not recommended to use app in combination with Armory Crate, cause th
Debloating helps to save your battery and keep laptop a bit cooler
![Helps to save your battery](https://raw.githubusercontent.com/seerge/g-helper/main/screenshots/screen-5w.png)
---------
**Disclaimers**
"ROG", "TUF", and "Armoury Crate" are trademarked by and belong to AsusTek Computer, Inc. I make no claims to these or any assets belonging to AsusTek Computer and use them purely for informational purposes only.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. MISUSE OF THIS SOFTWARE COULD CAUSE SYSTEM INSTABILITY OR MALFUNCTION.

Binary file not shown.

After

Width:  |  Height:  |  Size: 710 B

View File

@@ -719,7 +719,7 @@ namespace GHelper
if (Program.config.getConfigPerf("auto_apply_power") == 1)
{
var timer = new System.Timers.Timer(500);
var timer = new System.Timers.Timer(1000);
timer.Elapsed += delegate
{
timer.Stop();
@@ -836,8 +836,12 @@ namespace GHelper
{
SetEcoGPU(1);
}
else
{
AutoScreen(Plugged);
}
}
}
public int InitGPUMode()
@@ -888,6 +892,7 @@ namespace GHelper
Program.settingsForm.BeginInvoke(delegate
{
InitGPUMode();
Thread.Sleep(500);
AutoScreen(SystemInformation.PowerStatus.PowerLineStatus);
});
}).Start();
@@ -1023,7 +1028,9 @@ namespace GHelper
public void SetStartupCheck(bool status)
{
checkStartup.CheckedChanged -= CheckStartup_CheckedChanged;
checkStartup.Checked = status;
checkStartup.CheckedChanged += CheckStartup_CheckedChanged;
}
public void SetBatteryChargeLimit(int limit)

View File

@@ -22,16 +22,25 @@ public class Startup
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.Triggers.Add(new LogonTrigger { UserId = userId });
td.Actions.Add(strExeFilePath);
td.Settings.StopIfGoingOnBatteries = false;
td.Settings.DisallowStartIfOnBatteries = false;
TaskService.Instance.RootFolder.RegisterTaskDefinition(taskName, td);
Debug.WriteLine(strExeFilePath);
Debug.WriteLine(userId);
try
{
TaskService.Instance.RootFolder.RegisterTaskDefinition(taskName, td);
} catch
{
MessageBox.Show("Can't schedule task", "Scheduler Error", MessageBoxButtons.OK);
}
}
public static void UnSchedule()