GPU Restart

This commit is contained in:
Serge
2023-05-10 18:38:49 +02:00
parent 0142c25929
commit 7a6301328c
6 changed files with 123 additions and 66 deletions

View File

@@ -1,4 +1,5 @@
using HidLibrary;
using Microsoft.Win32;
using OSD;
using System.Diagnostics;
using System.Windows.Forms;
@@ -56,7 +57,7 @@ namespace GHelper
static byte[] MESSAGE_SET = { 0x5d, 0xb5, 0, 0, 0 };
static byte[] MESSAGE_APPLY = { 0x5d, 0xb4 };
static int[] deviceIds = { 0x1a30, 0x1854, 0x1869, 0x1866, 0x19b6, 0x1822, 0x1837, 0x1854, 0x184a, 0x183d, 0x8502, 0x1807, 0x17e0 };
static int[] deviceIds = { 0x1a30, 0x1854, 0x1869, 0x1866, 0x19b6, 0x1822, 0x1837, 0x1854, 0x184a, 0x183d, 0x8502, 0x1807, 0x17e0, 0x18c6 };
private static int mode = 0;
private static int speed = 1;
@@ -287,6 +288,24 @@ namespace GHelper
Program.wmi.TUFKeyboardRGB(Mode, Color1, _speed);
}
public static void SetBacklightOffDelay(int value = 60)
{
try
{
RegistryKey myKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\ASUS\ASUS System Control Interface\AsusOptimization\ASUS Keyboard Hotkeys", true);
if (myKey != null)
{
myKey.SetValue("TurnOffKeybdLight", value, RegistryValueKind.DWord);
myKey.Close();
}
} catch (Exception ex)
{
Logger.WriteLine(ex.Message);
}
}
}
}

142
app/Extra.Designer.cs generated
View File

@@ -44,6 +44,8 @@ namespace GHelper
labelM3 = new Label();
groupLight = new GroupBox();
panelBacklightExtra = new Panel();
numericBacklightTime = new NumericUpDown();
labelBacklightTimeout = new Label();
labelBrightness = new Label();
trackBrightness = new TrackBar();
labelSpeed = new Label();
@@ -72,14 +74,15 @@ namespace GHelper
checkSleepLid = new CheckBox();
checkShutdownLid = new CheckBox();
groupOther = new GroupBox();
checkKeyboardAuto = new CheckBox();
checkUSBC = new CheckBox();
checkNoOverdrive = new CheckBox();
checkKeyboardAuto = new CheckBox();
checkTopmost = new CheckBox();
groupBindings.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureHelp).BeginInit();
groupLight.SuspendLayout();
panelBacklightExtra.SuspendLayout();
((System.ComponentModel.ISupportInitialize)numericBacklightTime).BeginInit();
((System.ComponentModel.ISupportInitialize)trackBrightness).BeginInit();
panelXMG.SuspendLayout();
tableBacklight.SuspendLayout();
@@ -101,7 +104,7 @@ namespace GHelper
groupBindings.Dock = DockStyle.Top;
groupBindings.Location = new Point(10, 10);
groupBindings.Name = "groupBindings";
groupBindings.Size = new Size(934, 242);
groupBindings.Size = new Size(954, 242);
groupBindings.TabIndex = 0;
groupBindings.TabStop = false;
groupBindings.Text = "Key Bindings";
@@ -209,14 +212,15 @@ namespace GHelper
groupLight.Dock = DockStyle.Top;
groupLight.Location = new Point(10, 252);
groupLight.Name = "groupLight";
groupLight.Size = new Size(934, 475);
groupLight.Size = new Size(954, 516);
groupLight.TabIndex = 1;
groupLight.TabStop = false;
groupLight.Text = "Keyboard Backlight";
//
// panelBacklightExtra
//
panelBacklightExtra.AutoSize = true;
panelBacklightExtra.Controls.Add(numericBacklightTime);
panelBacklightExtra.Controls.Add(labelBacklightTimeout);
panelBacklightExtra.Controls.Add(labelBrightness);
panelBacklightExtra.Controls.Add(trackBrightness);
panelBacklightExtra.Controls.Add(labelSpeed);
@@ -224,9 +228,24 @@ namespace GHelper
panelBacklightExtra.Dock = DockStyle.Top;
panelBacklightExtra.Location = new Point(3, 319);
panelBacklightExtra.Name = "panelBacklightExtra";
panelBacklightExtra.Size = new Size(928, 153);
panelBacklightExtra.Size = new Size(948, 194);
panelBacklightExtra.TabIndex = 43;
//
// numericBacklightTime
//
numericBacklightTime.Location = new Point(477, 131);
numericBacklightTime.Name = "numericBacklightTime";
numericBacklightTime.Size = new Size(240, 39);
numericBacklightTime.TabIndex = 47;
//
// labelBacklightTimeout
//
labelBacklightTimeout.Location = new Point(13, 133);
labelBacklightTimeout.Name = "labelBacklightTimeout";
labelBacklightTimeout.Size = new Size(489, 45);
labelBacklightTimeout.TabIndex = 46;
labelBacklightTimeout.Text = "Seconds to turn off backlight on battery";
//
// labelBrightness
//
labelBrightness.Location = new Point(13, 76);
@@ -237,6 +256,7 @@ namespace GHelper
//
// trackBrightness
//
trackBrightness.LargeChange = 1;
trackBrightness.Location = new Point(216, 60);
trackBrightness.Maximum = 3;
trackBrightness.Name = "trackBrightness";
@@ -276,7 +296,7 @@ namespace GHelper
panelXMG.Dock = DockStyle.Top;
panelXMG.Location = new Point(3, 261);
panelXMG.Name = "panelXMG";
panelXMG.Size = new Size(928, 58);
panelXMG.Size = new Size(948, 58);
panelXMG.TabIndex = 42;
//
// checkXMG
@@ -328,7 +348,7 @@ namespace GHelper
tableBacklight.RowStyles.Add(new RowStyle());
tableBacklight.RowStyles.Add(new RowStyle());
tableBacklight.RowStyles.Add(new RowStyle());
tableBacklight.Size = new Size(928, 226);
tableBacklight.Size = new Size(948, 226);
tableBacklight.TabIndex = 41;
//
// labelBacklight
@@ -338,7 +358,7 @@ namespace GHelper
labelBacklight.Location = new Point(3, 0);
labelBacklight.Name = "labelBacklight";
labelBacklight.Padding = new Padding(10, 5, 5, 5);
labelBacklight.Size = new Size(226, 42);
labelBacklight.Size = new Size(231, 42);
labelBacklight.TabIndex = 6;
labelBacklight.Text = "Keyboard";
//
@@ -348,7 +368,7 @@ namespace GHelper
checkAwake.Location = new Point(3, 45);
checkAwake.Name = "checkAwake";
checkAwake.Padding = new Padding(15, 2, 5, 2);
checkAwake.Size = new Size(226, 40);
checkAwake.Size = new Size(231, 40);
checkAwake.TabIndex = 1;
checkAwake.Text = Strings.Awake;
checkAwake.UseVisualStyleBackColor = true;
@@ -359,7 +379,7 @@ namespace GHelper
checkBoot.Location = new Point(3, 91);
checkBoot.Name = "checkBoot";
checkBoot.Padding = new Padding(15, 2, 5, 2);
checkBoot.Size = new Size(226, 40);
checkBoot.Size = new Size(231, 40);
checkBoot.TabIndex = 2;
checkBoot.Text = Strings.Boot;
checkBoot.UseVisualStyleBackColor = true;
@@ -370,7 +390,7 @@ namespace GHelper
checkSleep.Location = new Point(3, 137);
checkSleep.Name = "checkSleep";
checkSleep.Padding = new Padding(15, 2, 5, 2);
checkSleep.Size = new Size(226, 40);
checkSleep.Size = new Size(231, 40);
checkSleep.TabIndex = 3;
checkSleep.Text = "Sleep";
checkSleep.UseVisualStyleBackColor = true;
@@ -381,7 +401,7 @@ namespace GHelper
checkShutdown.Location = new Point(3, 183);
checkShutdown.Name = "checkShutdown";
checkShutdown.Padding = new Padding(15, 2, 5, 2);
checkShutdown.Size = new Size(226, 40);
checkShutdown.Size = new Size(231, 40);
checkShutdown.TabIndex = 4;
checkShutdown.Text = Strings.Shutdown;
checkShutdown.UseVisualStyleBackColor = true;
@@ -390,20 +410,20 @@ namespace GHelper
//
labelBacklightLogo.Dock = DockStyle.Fill;
labelBacklightLogo.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelBacklightLogo.Location = new Point(235, 0);
labelBacklightLogo.Location = new Point(240, 0);
labelBacklightLogo.Name = "labelBacklightLogo";
labelBacklightLogo.Padding = new Padding(10, 5, 5, 5);
labelBacklightLogo.Size = new Size(226, 42);
labelBacklightLogo.Size = new Size(231, 42);
labelBacklightLogo.TabIndex = 21;
labelBacklightLogo.Text = "Logo";
//
// checkAwakeLogo
//
checkAwakeLogo.Dock = DockStyle.Fill;
checkAwakeLogo.Location = new Point(235, 45);
checkAwakeLogo.Location = new Point(240, 45);
checkAwakeLogo.Name = "checkAwakeLogo";
checkAwakeLogo.Padding = new Padding(15, 2, 5, 2);
checkAwakeLogo.Size = new Size(226, 40);
checkAwakeLogo.Size = new Size(231, 40);
checkAwakeLogo.TabIndex = 17;
checkAwakeLogo.Text = Strings.Awake;
checkAwakeLogo.UseVisualStyleBackColor = true;
@@ -411,10 +431,10 @@ namespace GHelper
// checkBootLogo
//
checkBootLogo.Dock = DockStyle.Fill;
checkBootLogo.Location = new Point(235, 91);
checkBootLogo.Location = new Point(240, 91);
checkBootLogo.Name = "checkBootLogo";
checkBootLogo.Padding = new Padding(15, 2, 5, 2);
checkBootLogo.Size = new Size(226, 40);
checkBootLogo.Size = new Size(231, 40);
checkBootLogo.TabIndex = 18;
checkBootLogo.Text = Strings.Boot;
checkBootLogo.UseVisualStyleBackColor = true;
@@ -422,10 +442,10 @@ namespace GHelper
// checkSleepLogo
//
checkSleepLogo.Dock = DockStyle.Fill;
checkSleepLogo.Location = new Point(235, 137);
checkSleepLogo.Location = new Point(240, 137);
checkSleepLogo.Name = "checkSleepLogo";
checkSleepLogo.Padding = new Padding(15, 2, 5, 2);
checkSleepLogo.Size = new Size(226, 40);
checkSleepLogo.Size = new Size(231, 40);
checkSleepLogo.TabIndex = 19;
checkSleepLogo.Text = Strings.Sleep;
checkSleepLogo.UseVisualStyleBackColor = true;
@@ -433,10 +453,10 @@ namespace GHelper
// checkShutdownLogo
//
checkShutdownLogo.Dock = DockStyle.Fill;
checkShutdownLogo.Location = new Point(235, 183);
checkShutdownLogo.Location = new Point(240, 183);
checkShutdownLogo.Name = "checkShutdownLogo";
checkShutdownLogo.Padding = new Padding(15, 2, 5, 2);
checkShutdownLogo.Size = new Size(226, 40);
checkShutdownLogo.Size = new Size(231, 40);
checkShutdownLogo.TabIndex = 20;
checkShutdownLogo.Text = Strings.Shutdown;
checkShutdownLogo.UseVisualStyleBackColor = true;
@@ -445,20 +465,20 @@ namespace GHelper
//
labelBacklightBar.Dock = DockStyle.Fill;
labelBacklightBar.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelBacklightBar.Location = new Point(467, 0);
labelBacklightBar.Location = new Point(477, 0);
labelBacklightBar.Name = "labelBacklightBar";
labelBacklightBar.Padding = new Padding(10, 5, 5, 5);
labelBacklightBar.Size = new Size(226, 42);
labelBacklightBar.Size = new Size(231, 42);
labelBacklightBar.TabIndex = 11;
labelBacklightBar.Text = "Lightbar";
//
// checkAwakeBar
//
checkAwakeBar.Dock = DockStyle.Fill;
checkAwakeBar.Location = new Point(467, 45);
checkAwakeBar.Location = new Point(477, 45);
checkAwakeBar.Name = "checkAwakeBar";
checkAwakeBar.Padding = new Padding(15, 2, 5, 2);
checkAwakeBar.Size = new Size(226, 40);
checkAwakeBar.Size = new Size(231, 40);
checkAwakeBar.TabIndex = 7;
checkAwakeBar.Text = Strings.Awake;
checkAwakeBar.UseVisualStyleBackColor = true;
@@ -466,10 +486,10 @@ namespace GHelper
// checkBootBar
//
checkBootBar.Dock = DockStyle.Fill;
checkBootBar.Location = new Point(467, 91);
checkBootBar.Location = new Point(477, 91);
checkBootBar.Name = "checkBootBar";
checkBootBar.Padding = new Padding(15, 2, 5, 2);
checkBootBar.Size = new Size(226, 40);
checkBootBar.Size = new Size(231, 40);
checkBootBar.TabIndex = 8;
checkBootBar.Text = Strings.Boot;
checkBootBar.UseVisualStyleBackColor = true;
@@ -477,10 +497,10 @@ namespace GHelper
// checkSleepBar
//
checkSleepBar.Dock = DockStyle.Fill;
checkSleepBar.Location = new Point(467, 137);
checkSleepBar.Location = new Point(477, 137);
checkSleepBar.Name = "checkSleepBar";
checkSleepBar.Padding = new Padding(15, 2, 5, 2);
checkSleepBar.Size = new Size(226, 40);
checkSleepBar.Size = new Size(231, 40);
checkSleepBar.TabIndex = 9;
checkSleepBar.Text = Strings.Sleep;
checkSleepBar.UseVisualStyleBackColor = true;
@@ -488,10 +508,10 @@ namespace GHelper
// checkShutdownBar
//
checkShutdownBar.Dock = DockStyle.Fill;
checkShutdownBar.Location = new Point(467, 183);
checkShutdownBar.Location = new Point(477, 183);
checkShutdownBar.Name = "checkShutdownBar";
checkShutdownBar.Padding = new Padding(15, 2, 5, 2);
checkShutdownBar.Size = new Size(226, 40);
checkShutdownBar.Size = new Size(231, 40);
checkShutdownBar.TabIndex = 10;
checkShutdownBar.Text = Strings.Shutdown;
checkShutdownBar.UseVisualStyleBackColor = true;
@@ -500,20 +520,20 @@ namespace GHelper
//
labelBacklightLid.Dock = DockStyle.Fill;
labelBacklightLid.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelBacklightLid.Location = new Point(699, 0);
labelBacklightLid.Location = new Point(714, 0);
labelBacklightLid.Name = "labelBacklightLid";
labelBacklightLid.Padding = new Padding(10, 5, 5, 5);
labelBacklightLid.Size = new Size(226, 42);
labelBacklightLid.Size = new Size(231, 42);
labelBacklightLid.TabIndex = 16;
labelBacklightLid.Text = "Lid";
//
// checkAwakeLid
//
checkAwakeLid.Dock = DockStyle.Fill;
checkAwakeLid.Location = new Point(699, 45);
checkAwakeLid.Location = new Point(714, 45);
checkAwakeLid.Name = "checkAwakeLid";
checkAwakeLid.Padding = new Padding(15, 2, 5, 2);
checkAwakeLid.Size = new Size(226, 40);
checkAwakeLid.Size = new Size(231, 40);
checkAwakeLid.TabIndex = 12;
checkAwakeLid.Text = Strings.Awake;
checkAwakeLid.UseVisualStyleBackColor = true;
@@ -521,10 +541,10 @@ namespace GHelper
// checkBootLid
//
checkBootLid.Dock = DockStyle.Fill;
checkBootLid.Location = new Point(699, 91);
checkBootLid.Location = new Point(714, 91);
checkBootLid.Name = "checkBootLid";
checkBootLid.Padding = new Padding(15, 2, 5, 2);
checkBootLid.Size = new Size(226, 40);
checkBootLid.Size = new Size(231, 40);
checkBootLid.TabIndex = 13;
checkBootLid.Text = Strings.Boot;
checkBootLid.UseVisualStyleBackColor = true;
@@ -532,10 +552,10 @@ namespace GHelper
// checkSleepLid
//
checkSleepLid.Dock = DockStyle.Fill;
checkSleepLid.Location = new Point(699, 137);
checkSleepLid.Location = new Point(714, 137);
checkSleepLid.Name = "checkSleepLid";
checkSleepLid.Padding = new Padding(15, 2, 5, 2);
checkSleepLid.Size = new Size(226, 40);
checkSleepLid.Size = new Size(231, 40);
checkSleepLid.TabIndex = 14;
checkSleepLid.Text = Strings.Sleep;
checkSleepLid.UseVisualStyleBackColor = true;
@@ -543,28 +563,39 @@ namespace GHelper
// checkShutdownLid
//
checkShutdownLid.Dock = DockStyle.Fill;
checkShutdownLid.Location = new Point(699, 183);
checkShutdownLid.Location = new Point(714, 183);
checkShutdownLid.Name = "checkShutdownLid";
checkShutdownLid.Padding = new Padding(15, 2, 5, 2);
checkShutdownLid.Size = new Size(226, 40);
checkShutdownLid.Size = new Size(231, 40);
checkShutdownLid.TabIndex = 15;
checkShutdownLid.Text = Strings.Shutdown;
checkShutdownLid.UseVisualStyleBackColor = true;
//
// groupOther
//
groupOther.Controls.Add(checkKeyboardAuto);
groupOther.Controls.Add(checkUSBC);
groupOther.Controls.Add(checkNoOverdrive);
groupOther.Controls.Add(checkKeyboardAuto);
groupOther.Controls.Add(checkTopmost);
groupOther.Dock = DockStyle.Top;
groupOther.Location = new Point(10, 727);
groupOther.Location = new Point(10, 768);
groupOther.Name = "groupOther";
groupOther.Size = new Size(934, 276);
groupOther.Size = new Size(954, 276);
groupOther.TabIndex = 2;
groupOther.TabStop = false;
groupOther.Text = "Other";
//
// checkKeyboardAuto
//
checkKeyboardAuto.AutoSize = true;
checkKeyboardAuto.Location = new Point(25, 53);
checkKeyboardAuto.MaximumSize = new Size(780, 0);
checkKeyboardAuto.Name = "checkKeyboardAuto";
checkKeyboardAuto.Size = new Size(712, 36);
checkKeyboardAuto.TabIndex = 46;
checkKeyboardAuto.Text = Strings.KeyboardAuto;
checkKeyboardAuto.UseVisualStyleBackColor = true;
//
// checkUSBC
//
checkUSBC.AutoSize = true;
@@ -585,17 +616,6 @@ namespace GHelper
checkNoOverdrive.Text = Strings.DisableOverdrive;
checkNoOverdrive.UseVisualStyleBackColor = true;
//
// checkKeyboardAuto
//
checkKeyboardAuto.AutoSize = true;
checkKeyboardAuto.Location = new Point(25, 52);
checkKeyboardAuto.MaximumSize = new Size(780, 0);
checkKeyboardAuto.Name = "checkKeyboardAuto";
checkKeyboardAuto.Size = new Size(712, 36);
checkKeyboardAuto.TabIndex = 2;
checkKeyboardAuto.Text = Strings.KeyboardAuto;
checkKeyboardAuto.UseVisualStyleBackColor = true;
//
// checkTopmost
//
checkTopmost.AutoSize = true;
@@ -610,7 +630,9 @@ namespace GHelper
//
AutoScaleDimensions = new SizeF(13F, 32F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(954, 1013);
AutoSize = true;
AutoSizeMode = AutoSizeMode.GrowAndShrink;
ClientSize = new Size(974, 1059);
Controls.Add(groupOther);
Controls.Add(groupLight);
Controls.Add(groupBindings);
@@ -618,6 +640,7 @@ namespace GHelper
MaximizeBox = false;
MdiChildrenMinimizedAnchorBottom = false;
MinimizeBox = false;
MinimumSize = new Size(1000, 0);
Name = "Extra";
Padding = new Padding(10);
ShowIcon = false;
@@ -630,6 +653,7 @@ namespace GHelper
groupLight.PerformLayout();
panelBacklightExtra.ResumeLayout(false);
panelBacklightExtra.PerformLayout();
((System.ComponentModel.ISupportInitialize)numericBacklightTime).EndInit();
((System.ComponentModel.ISupportInitialize)trackBrightness).EndInit();
panelXMG.ResumeLayout(false);
panelXMG.PerformLayout();
@@ -655,7 +679,6 @@ namespace GHelper
private GroupBox groupLight;
private GroupBox groupOther;
private CheckBox checkTopmost;
private CheckBox checkKeyboardAuto;
private CheckBox checkNoOverdrive;
private PictureBox pictureHelp;
private CheckBox checkUSBC;
@@ -687,5 +710,8 @@ namespace GHelper
private RComboBox comboKeyboardSpeed;
private Panel panelXMG;
private CheckBox checkXMG;
private Label labelBacklightTimeout;
private NumericUpDown numericBacklightTime;
private CheckBox checkKeyboardAuto;
}
}

View File

@@ -186,7 +186,18 @@ namespace GHelper
checkXMG.Checked = !(Program.config.getConfig("xmg_light") == 0);
checkXMG.CheckedChanged += CheckXMG_CheckedChanged;
int kb_timeout = Program.config.getConfig("keyboard_light_tiomeout");
numericBacklightTime.Value = (kb_timeout >= 0) ? kb_timeout : 60;
numericBacklightTime.ValueChanged += NumericBacklightTime_ValueChanged;
}
private void NumericBacklightTime_ValueChanged(object? sender, EventArgs e)
{
Program.RunAsAdmin("extra");
Program.config.setConfig("keyboard_light_tiomeout", (int)numericBacklightTime.Value);
Aura.SetBacklightOffDelay((int)numericBacklightTime.Value);
}
private void CheckXMG_CheckedChanged(object? sender, EventArgs e)

View File

@@ -101,8 +101,9 @@ public class NvidiaGpuControl : IGpuControl
var pnpDeviceId = internalGpu.BusInformation.PCIIdentifiers.ToString();
Logger.WriteLine("Device ID:"+ pnpDeviceId);
RunCMD("pnputil", $"/disable-device /deviceid \"{pnpDeviceId}\"");
Thread.Sleep(1000);
Thread.Sleep(2000);
RunCMD("pnputil", $"/enable-device /deviceid \"{pnpDeviceId}\"");
Thread.Sleep(1000);
}
catch (Exception ex )
{

View File

@@ -629,8 +629,8 @@ public class NativeMethods
displayNum = count;
}
count++;
//Logger.WriteLine(device.outputTechnology.ToString());
//Logger.WriteLine(device.monitorFriendlyDeviceName);
Logger.WriteLine(device.outputTechnology.ToString());
Logger.WriteLine(device.monitorFriendlyDeviceName);
}
var screens = Screen.AllScreens;
@@ -644,7 +644,7 @@ public class NativeMethods
{
laptopScreen = screen.DeviceName;
}
//Logger.WriteLine(screen.DeviceName);
Logger.WriteLine(screen.DeviceName);
count++;
}
}
@@ -652,7 +652,7 @@ public class NativeMethods
{
Logger.WriteLine(ex.ToString());
Logger.WriteLine("Can't detect internal screen");
//laptopScreen = Screen.PrimaryScreen.DeviceName;
laptopScreen = Screen.PrimaryScreen.DeviceName;
}

View File

@@ -1064,6 +1064,7 @@ namespace GHelper
{
int getStatus = nvControl.GetClocks(out int current_core, out int current_memory, out string gpuName);
if (getStatus == -1) return;
if (Math.Abs(gpu_core - current_core) < 5 && Math.Abs(gpu_memory - current_memory) < 5) return;
int setStatus = nvControl.SetClocks(gpu_core, gpu_memory);
@@ -1490,8 +1491,7 @@ namespace GHelper
if (status == 0 && eco == 1 && hardWay)
{
RestartGPUHardWay();
await Task.Delay(TimeSpan.FromSeconds(2));
Program.wmi.SetGPUEco(0);
Program.wmi.SetGPUEco(eco);
}