diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 00000000..5a3c0432
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,4 @@
+[*.{cs,vb}]
+
+# IDE0017: Simplify object initialization
+dotnet_style_object_initializer = true
diff --git a/App.config b/App.config
new file mode 100644
index 00000000..6ee0905e
--- /dev/null
+++ b/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GHelper.csproj b/GHelper.csproj
new file mode 100644
index 00000000..716b5e53
--- /dev/null
+++ b/GHelper.csproj
@@ -0,0 +1,45 @@
+
+
+
+ WinExe
+ net6.0-windows10.0.22621.0
+ enable
+ true
+ enable
+ True
+ app.manifest
+ Program
+ Resources\standard.ico
+
+
+
+
+ tlbimp
+ 0
+ 1
+ 8e80422b-cac4-472b-b272-9635f1dfef3b
+ 0
+ false
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..\..\.nuget\packages\microsoft.management.infrastructure\2.0.0\ref\net451\Microsoft.Management.Infrastructure.dll
+
+
+ ..\..\.nuget\packages\microsoft.management.infrastructure.runtime.win\2.0.0\runtimes\win10-x64\lib\netstandard1.6\Microsoft.Management.Infrastructure.Native.dll
+
+
+
+
\ No newline at end of file
diff --git a/GHelper.sln b/GHelper.sln
new file mode 100644
index 00000000..ebb557a1
--- /dev/null
+++ b/GHelper.sln
@@ -0,0 +1,30 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.4.33403.182
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GHelper", "GHelper.csproj", "{D6138BB1-8FDB-4835-87EF-2FE41A3DD604}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{B6E44CC6-5D28-4CB9-8EE2-BE9D6238E2D6}"
+ ProjectSection(SolutionItems) = preProject
+ .editorconfig = .editorconfig
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {D6138BB1-8FDB-4835-87EF-2FE41A3DD604}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D6138BB1-8FDB-4835-87EF-2FE41A3DD604}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D6138BB1-8FDB-4835-87EF-2FE41A3DD604}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D6138BB1-8FDB-4835-87EF-2FE41A3DD604}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {B1BF5148-497A-4B5A-B079-5C00CD047DAF}
+ EndGlobalSection
+EndGlobal
diff --git a/Program.cs b/Program.cs
new file mode 100644
index 00000000..cbe0b7aa
--- /dev/null
+++ b/Program.cs
@@ -0,0 +1,221 @@
+using System;
+using System.Windows.Forms;
+
+using System.Text.Json;
+using System.Management;
+using Microsoft.Win32.TaskScheduler;
+using System.Diagnostics;
+using System.Reflection.Emit;
+using System.Runtime.InteropServices;
+using System.Reflection;
+
+using System.Diagnostics;
+
+using GHelper;
+using System.Dynamic;
+
+public class ASUSWmi
+{
+ private ManagementObject mo;
+ private ManagementClass classInstance;
+
+ public const int CPU_Fan = 0x00110013;
+ public const int GPU_Fan = 0x00110014;
+
+ public const int PerformanceMode = 0x00120075;
+
+ public const int GPUEco = 0x00090020;
+ public const int GPUMux = 0x00090016;
+
+
+ public const int PerformanceBalanced = 0;
+ public const int PerformanceTurbo = 1;
+ public const int PerformanceSilent = 2;
+
+ public const int GPUModeEco = 0;
+ public const int GPUModeStandard = 1;
+ public const int GPUModeUltimate = 2;
+
+ public ASUSWmi()
+ {
+ this.classInstance = new ManagementClass(new ManagementScope("root\\wmi"), new ManagementPath("AsusAtkWmi_WMNB"), null);
+ foreach (ManagementObject mo in this.classInstance.GetInstances())
+ {
+ this.mo = mo;
+ }
+ }
+
+ private int WMICall(string MethodName, int Device_Id, int Control_status = -1)
+ {
+ ManagementBaseObject inParams = this.classInstance.Methods[MethodName].InParameters;
+ inParams["Device_ID"] = Device_Id;
+ if (Control_status != -1)
+ {
+ inParams["Control_status"] = Control_status;
+ }
+
+ ManagementBaseObject outParams = this.mo.InvokeMethod(MethodName, inParams, null);
+ foreach (PropertyData property in outParams.Properties)
+ {
+ if (property.Name == "device_status") return int.Parse(property.Value.ToString()) - 65536;
+ if (property.Name == "result") return int.Parse(property.Value.ToString());
+ }
+
+ return -1;
+
+ }
+
+ public int DeviceGet(int Device_Id)
+ {
+ return this.WMICall("DSTS", Device_Id);
+ }
+ public int DeviceSet(int Device_Id, int Control_status)
+ {
+ return this.WMICall("DEVS", Device_Id, Control_status);
+ }
+
+ public void SubscribeToEvents(Action