Initial commit, basic functionality

This commit is contained in:
seerge
2023-02-16 22:52:39 +01:00
parent fae1893b5d
commit e802bf72e3
9 changed files with 68 additions and 30 deletions

View File

@@ -29,6 +29,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
<PackageReference Include="System.Management" Version="7.0.0" /> <PackageReference Include="System.Management" Version="7.0.0" />
<PackageReference Include="TaskScheduler" Version="2.10.1" /> <PackageReference Include="TaskScheduler" Version="2.10.1" />
</ItemGroup> </ItemGroup>

View File

@@ -1,7 +1,6 @@
using System; using System;
using System.Windows.Forms; using System.Windows.Forms;
using System.Text.Json;
using System.Management; using System.Management;
using Microsoft.Win32.TaskScheduler; using Microsoft.Win32.TaskScheduler;
using System.Diagnostics; using System.Diagnostics;
@@ -9,10 +8,12 @@ using System.Reflection.Emit;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Reflection; using System.Reflection;
using System.Diagnostics;
using GHelper; using GHelper;
using System.Dynamic; using System.Dynamic;
using System.IO;
using System.Xml.Linq;
using Newtonsoft.Json;
public class ASUSWmi public class ASUSWmi
{ {
@@ -87,15 +88,61 @@ public class ASUSWmi
} }
}
public class AppConfig
{
string appPath;
string configFile;
public dynamic Config = new ExpandoObject();
public AppConfig() {
appPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)+"\\GHelper";
configFile = appPath + "\\config.json";
if (!System.IO.Directory.Exists(appPath))
System.IO.Directory.CreateDirectory(appPath);
if (File.Exists(configFile))
{
string text = File.ReadAllText(configFile);
Config = JsonConvert.DeserializeObject<ExpandoObject>(text);
} else
{
Config.performance_mode = 0;
string jsonString = JsonConvert.SerializeObject(Config);
File.WriteAllText(configFile, jsonString);
}
}
public int getConfig (string name)
{
var propertyInfo = Config.GetType().GetProperty(name);
return propertyInfo.GetValue(Config, null);
}
public void setConfig(string name, int value)
{
((IDictionary<String, Object>)Config).TryAdd(name, value);
string jsonString = JsonConvert.SerializeObject(Config);
File.WriteAllText(configFile, jsonString);
}
} }
static class Program static class Program
{ {
static NotifyIcon trayIcon; public static NotifyIcon trayIcon;
public static ASUSWmi wmi; public static ASUSWmi wmi;
public static dynamic config = new System.Dynamic.ExpandoObject(); public static AppConfig config;
public static SettingsForm settingsForm; public static SettingsForm settingsForm;
@@ -111,6 +158,8 @@ static class Program
trayIcon.MouseClick += TrayIcon_MouseClick; ; trayIcon.MouseClick += TrayIcon_MouseClick; ;
config = new AppConfig();
wmi = new ASUSWmi(); wmi = new ASUSWmi();
wmi.SubscribeToEvents(WatcherEventArrived); wmi.SubscribeToEvents(WatcherEventArrived);
@@ -124,41 +173,32 @@ static class Program
settingsForm.FormClosed += SettingsForm_FormClosed; settingsForm.FormClosed += SettingsForm_FormClosed;
config.PerformanceMode = 0;
Application.Run(); Application.Run();
} }
public static int GetGPUMode () public static int GetGPUMode ()
{ {
int eco = wmi.DeviceGet(ASUSWmi.GPUEco); int eco = wmi.DeviceGet(ASUSWmi.GPUEco);
int mux = wmi.DeviceGet(ASUSWmi.GPUMux); int mux = wmi.DeviceGet(ASUSWmi.GPUMux);
int GpuMode; int GpuMode;
if (mux == 0) if (mux == 0)
{
GpuMode = ASUSWmi.GPUModeUltimate; GpuMode = ASUSWmi.GPUModeUltimate;
}
else else
{ {
if (eco == 1) if (eco == 1)
{
GpuMode = ASUSWmi.GPUModeEco; GpuMode = ASUSWmi.GPUModeEco;
}
else else
{
GpuMode = ASUSWmi.GPUModeStandard; GpuMode = ASUSWmi.GPUModeStandard;
}
if (mux != 1) if (mux != 1)
{
settingsForm.Disable_Ultimate(); settingsForm.Disable_Ultimate();
}
} }
config.gpu_mode = GpuMode; config.setConfig ("gpu_mode",GpuMode);
return GpuMode; return GpuMode;
@@ -193,9 +233,7 @@ static class Program
if (e.Button == MouseButtons.Left) if (e.Button == MouseButtons.Left)
{ {
if (settingsForm.Visible) if (settingsForm.Visible)
{ settingsForm.Hide(); else
settingsForm.Hide();
} else
{ {
settingsForm.Show(); settingsForm.Show();
settingsForm.Activate(); settingsForm.Activate();
@@ -208,7 +246,7 @@ static class Program
{ {
settingsForm.BeginInvoke(delegate settingsForm.BeginInvoke(delegate
{ {
settingsForm.SetPerformanceMode(config.PerformanceMode + 1); settingsForm.SetPerformanceMode(config.getConfig("performance_mode") + 1);
}); });
} }

BIN
Resources/eco.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 885 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 400 B

BIN
Resources/ultimate.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@@ -116,7 +116,8 @@ namespace GHelper
break; break;
} }
Program.config.PerformanceMode = PerformanceMode;
Program.config.setConfig("performance_mode", PerformanceMode);
Program.wmi.DeviceSet(ASUSWmi.PerformanceMode, PerformanceMode); Program.wmi.DeviceSet(ASUSWmi.PerformanceMode, PerformanceMode);
} }
@@ -125,13 +126,10 @@ namespace GHelper
public void SetGPUMode(int GPUMode = ASUSWmi.GPUModeStandard) public void SetGPUMode(int GPUMode = ASUSWmi.GPUModeStandard)
{ {
int CurrentGPU = ASUSWmi.GPUModeStandard; int CurrentGPU = Program.config.getConfig("gpu_mode");
if (((IDictionary<String, object>) Program.config).ContainsKey("gpu_mode")) { if (CurrentGPU == GPUMode)
CurrentGPU = Program.config.gpu_mode; return;
}
if (CurrentGPU == GPUMode) { return; }
var restart = false; var restart = false;
var changed = false; var changed = false;
@@ -168,9 +166,7 @@ namespace GHelper
} }
if (changed) if (changed)
{ Program.config.setConfig("gpu_mode", GPUMode);
Program.config.gpu_mode = GPUMode;
}
if (restart) if (restart)
{ {
@@ -193,14 +189,17 @@ namespace GHelper
case ASUSWmi.GPUModeEco: case ASUSWmi.GPUModeEco:
buttonEco.BackColor = colorActive; buttonEco.BackColor = colorActive;
groupGPU.Text = "GPU Mode: Eco (iGPU only)"; groupGPU.Text = "GPU Mode: Eco (iGPU only)";
Program.trayIcon.Icon = new System.Drawing.Icon("Resources/eco.ico");
break; break;
case ASUSWmi.GPUModeUltimate: case ASUSWmi.GPUModeUltimate:
buttonUltimate.BackColor = colorActive; buttonUltimate.BackColor = colorActive;
groupGPU.Text = "GPU Mode: Ultimate (dGPU exclusive)"; groupGPU.Text = "GPU Mode: Ultimate (dGPU exclusive)";
Program.trayIcon.Icon = new System.Drawing.Icon("Resources/ultimate.ico");
break; break;
default: default:
buttonStandard.BackColor = colorActive; buttonStandard.BackColor = colorActive;
groupGPU.Text = "GPU Mode: Eco (iGPU and dGPU)"; groupGPU.Text = "GPU Mode: Eco (iGPU and dGPU)";
Program.trayIcon.Icon = new System.Drawing.Icon("Resources/standard.ico");
break; break;
} }
} }