Compare commits

...

15 Commits
v0.79 ... v0.81

Author SHA1 Message Date
Serge
306dfe2bd7 XGM button fix 2023-06-08 11:17:06 +02:00
Serge
ca7dfff357 Merge branch 'main' of https://github.com/seerge/g-helper 2023-06-07 22:52:05 +02:00
Serge
59288b9422 Integrated debloater 2023-06-07 22:52:04 +02:00
Serge
46ff8deb44 Merge pull request #558 from marcelomijas/main
Update Spanish translation
2023-06-07 22:21:51 +02:00
Marcelo Moreno
e6e8877531 Update Spanish translation 2023-06-07 21:48:57 +02:00
Serge
b13306b989 Added brightness control to M-hotkeys 2023-06-07 16:34:40 +02:00
Serge
838dc039ac Merge branch 'main' of https://github.com/seerge/g-helper 2023-06-07 15:16:34 +02:00
Serge
0702f95e0c Driver Updater improvements 2023-06-07 15:16:32 +02:00
Serge
f42fcf2f73 Merge pull request #554 from hellotale/patch-1
Add Korean translation
2023-06-07 12:07:15 +02:00
hellotale
6a7e1ddaa3 Add Korean translation 2023-06-07 16:25:57 +09:00
Serge
57ffcb8c7f Added manual mode config flag 2023-06-06 22:54:08 +02:00
Serge
5425bd0128 Color Profiles 2023-06-06 22:06:45 +02:00
Serge
328cd8f9f1 Minor refactoring 2023-06-06 13:17:13 +02:00
Serge
38739ca8f6 CPU power limits 2023-06-06 11:38:11 +02:00
Serge
a3e235e886 Added PPT fix for M16, G17 (2023) and F15 (2022) 2023-06-06 10:59:49 +02:00
28 changed files with 1358 additions and 429 deletions

View File

@@ -227,6 +227,12 @@ public static class AppConfig
return getConfig(name + "_" + mode);
}
public static bool isConfigPerf(string name)
{
int mode = getConfig("performance_mode");
return getConfig(name + "_" + mode) == 1;
}
public static void setConfigPerf(string name, int value)
{
int mode = getConfig("performance_mode");

View File

@@ -420,6 +420,7 @@ public class AsusACPI
return DeviceGet(PPT_CPUB0) >= 0 && DeviceGet(PPT_GPUC0) < 0;
}
/*
public void ScanRange()
{
int value;
@@ -437,6 +438,7 @@ public class AsusACPI
}
}
*/
public void TUFKeyboardBrightness(int brightness)
{

View File

@@ -124,7 +124,8 @@ namespace GHelper
_modes.Remove(3);
}
if (AppConfig.ContainsModel("G513QY")) {
if (AppConfig.ContainsModel("G513QY"))
{
return _modes;
}
@@ -260,18 +261,31 @@ namespace GHelper
{
byte[] msg = { AURA_HID_ID, 0xba, 0xc5, 0xc4, (byte)brightness };
byte[] msgBackup = { INPUT_HID_ID, 0xba, 0xc5, 0xc4, (byte)brightness };
var devices = GetHidDevices(deviceIds);
var devices = GetHidDevices(deviceIds, 0);
foreach (HidDevice device in devices)
{
device.OpenDevice();
device.WriteFeatureData(msg);
Logger.WriteLine(log + ":" + BitConverter.ToString(msg));
if (device.ReadFeatureData(out byte[] data, AURA_HID_ID))
{
device.WriteFeatureData(msg);
Logger.WriteLine(log + ":" + BitConverter.ToString(msg));
}
if (AppConfig.ContainsModel("GA503") && device.ReadFeatureData(out byte[] dataBackkup, INPUT_HID_ID))
{
device.WriteFeatureData(msgBackup);
Logger.WriteLine(log + ":" + BitConverter.ToString(msgBackup));
}
device.CloseDevice();
}
// Backup payload for old models
if (AppConfig.ContainsModel("503"))
/*
if (AppConfig.ContainsModel("GA503RW"))
{
byte[] msgBackup = { INPUT_HID_ID, 0xba, 0xc5, 0xc4, (byte)brightness };
@@ -283,6 +297,7 @@ namespace GHelper
device.CloseDevice();
}
}
*/
});

139
app/Extra.Designer.cs generated
View File

@@ -93,6 +93,9 @@ namespace GHelper
checkVariBright = new CheckBox();
checkGpuApps = new CheckBox();
checkFnLock = new CheckBox();
panelServices = new Panel();
labelServices = new Label();
buttonServices = new RButton();
groupBindings.SuspendLayout();
tableKeys.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureHelp).BeginInit();
@@ -104,6 +107,7 @@ namespace GHelper
panelXMG.SuspendLayout();
tableBacklight.SuspendLayout();
groupOther.SuspendLayout();
panelServices.SuspendLayout();
SuspendLayout();
//
// groupBindings
@@ -380,7 +384,7 @@ namespace GHelper
groupLight.Margin = new Padding(4, 2, 4, 2);
groupLight.Name = "groupLight";
groupLight.Padding = new Padding(4, 2, 4, 11);
groupLight.Size = new Size(966, 554);
groupLight.Size = new Size(966, 526);
groupLight.TabIndex = 1;
groupLight.TabStop = false;
groupLight.Text = "Keyboard Backlight";
@@ -398,15 +402,15 @@ namespace GHelper
panelBacklightExtra.Controls.Add(labelSpeed);
panelBacklightExtra.Controls.Add(comboKeyboardSpeed);
panelBacklightExtra.Dock = DockStyle.Top;
panelBacklightExtra.Location = new Point(4, 315);
panelBacklightExtra.Location = new Point(4, 299);
panelBacklightExtra.Margin = new Padding(4, 2, 4, 2);
panelBacklightExtra.Name = "panelBacklightExtra";
panelBacklightExtra.Size = new Size(958, 228);
panelBacklightExtra.Size = new Size(958, 216);
panelBacklightExtra.TabIndex = 43;
//
// numericBacklightPluggedTime
//
numericBacklightPluggedTime.Location = new Point(702, 181);
numericBacklightPluggedTime.Location = new Point(702, 169);
numericBacklightPluggedTime.Margin = new Padding(4, 2, 4, 2);
numericBacklightPluggedTime.Maximum = new decimal(new int[] { 3600, 0, 0, 0 });
numericBacklightPluggedTime.Name = "numericBacklightPluggedTime";
@@ -415,7 +419,7 @@ namespace GHelper
//
// labelBacklightTimeoutPlugged
//
labelBacklightTimeoutPlugged.Location = new Point(13, 183);
labelBacklightTimeoutPlugged.Location = new Point(13, 171);
labelBacklightTimeoutPlugged.Margin = new Padding(4, 0, 4, 0);
labelBacklightTimeoutPlugged.Name = "labelBacklightTimeoutPlugged";
labelBacklightTimeoutPlugged.Size = new Size(683, 45);
@@ -424,7 +428,7 @@ namespace GHelper
//
// numericBacklightTime
//
numericBacklightTime.Location = new Point(702, 132);
numericBacklightTime.Location = new Point(702, 120);
numericBacklightTime.Margin = new Padding(4, 2, 4, 2);
numericBacklightTime.Maximum = new decimal(new int[] { 3600, 0, 0, 0 });
numericBacklightTime.Name = "numericBacklightTime";
@@ -433,7 +437,7 @@ namespace GHelper
//
// labelBacklightTimeout
//
labelBacklightTimeout.Location = new Point(13, 134);
labelBacklightTimeout.Location = new Point(13, 122);
labelBacklightTimeout.Margin = new Padding(4, 0, 4, 0);
labelBacklightTimeout.Name = "labelBacklightTimeout";
labelBacklightTimeout.Size = new Size(683, 45);
@@ -452,7 +456,7 @@ namespace GHelper
// trackBrightness
//
trackBrightness.LargeChange = 1;
trackBrightness.Location = new Point(355, 60);
trackBrightness.Location = new Point(355, 59);
trackBrightness.Margin = new Padding(4, 2, 4, 2);
trackBrightness.Maximum = 3;
trackBrightness.Name = "trackBrightness";
@@ -462,7 +466,7 @@ namespace GHelper
//
// labelSpeed
//
labelSpeed.Location = new Point(13, 15);
labelSpeed.Location = new Point(13, 18);
labelSpeed.Margin = new Padding(4, 0, 4, 0);
labelSpeed.Name = "labelSpeed";
labelSpeed.Size = new Size(539, 41);
@@ -478,7 +482,7 @@ namespace GHelper
comboKeyboardSpeed.FormattingEnabled = true;
comboKeyboardSpeed.ItemHeight = 32;
comboKeyboardSpeed.Items.AddRange(new object[] { "Slow", "Normal", "Fast" });
comboKeyboardSpeed.Location = new Point(607, 15);
comboKeyboardSpeed.Location = new Point(607, 16);
comboKeyboardSpeed.Margin = new Padding(4, 11, 4, 9);
comboKeyboardSpeed.Name = "comboKeyboardSpeed";
comboKeyboardSpeed.Size = new Size(292, 40);
@@ -489,7 +493,7 @@ namespace GHelper
//
panelXMG.Controls.Add(checkXMG);
panelXMG.Dock = DockStyle.Top;
panelXMG.Location = new Point(4, 257);
panelXMG.Location = new Point(4, 241);
panelXMG.Margin = new Padding(4, 2, 4, 2);
panelXMG.Name = "panelXMG";
panelXMG.Size = new Size(958, 58);
@@ -545,7 +549,7 @@ namespace GHelper
tableBacklight.RowStyles.Add(new RowStyle());
tableBacklight.RowStyles.Add(new RowStyle());
tableBacklight.RowStyles.Add(new RowStyle());
tableBacklight.Size = new Size(958, 223);
tableBacklight.Size = new Size(958, 207);
tableBacklight.TabIndex = 41;
//
// labelBacklight
@@ -563,8 +567,8 @@ namespace GHelper
// checkAwake
//
checkAwake.Dock = DockStyle.Fill;
checkAwake.Location = new Point(4, 45);
checkAwake.Margin = new Padding(4, 2, 4, 2);
checkAwake.Location = new Point(4, 43);
checkAwake.Margin = new Padding(4, 0, 4, 0);
checkAwake.Name = "checkAwake";
checkAwake.Padding = new Padding(15, 2, 6, 2);
checkAwake.Size = new Size(231, 41);
@@ -575,8 +579,8 @@ namespace GHelper
// checkBoot
//
checkBoot.Dock = DockStyle.Fill;
checkBoot.Location = new Point(4, 90);
checkBoot.Margin = new Padding(4, 2, 4, 2);
checkBoot.Location = new Point(4, 84);
checkBoot.Margin = new Padding(4, 0, 4, 0);
checkBoot.Name = "checkBoot";
checkBoot.Padding = new Padding(15, 2, 6, 2);
checkBoot.Size = new Size(231, 41);
@@ -587,8 +591,8 @@ namespace GHelper
// checkSleep
//
checkSleep.Dock = DockStyle.Fill;
checkSleep.Location = new Point(4, 135);
checkSleep.Margin = new Padding(4, 2, 4, 2);
checkSleep.Location = new Point(4, 125);
checkSleep.Margin = new Padding(4, 0, 4, 0);
checkSleep.Name = "checkSleep";
checkSleep.Padding = new Padding(15, 2, 6, 2);
checkSleep.Size = new Size(231, 41);
@@ -599,8 +603,8 @@ namespace GHelper
// checkShutdown
//
checkShutdown.Dock = DockStyle.Fill;
checkShutdown.Location = new Point(4, 180);
checkShutdown.Margin = new Padding(4, 2, 4, 2);
checkShutdown.Location = new Point(4, 166);
checkShutdown.Margin = new Padding(4, 0, 4, 0);
checkShutdown.Name = "checkShutdown";
checkShutdown.Padding = new Padding(15, 2, 6, 2);
checkShutdown.Size = new Size(231, 41);
@@ -623,8 +627,8 @@ namespace GHelper
// checkAwakeLogo
//
checkAwakeLogo.Dock = DockStyle.Fill;
checkAwakeLogo.Location = new Point(243, 45);
checkAwakeLogo.Margin = new Padding(4, 2, 4, 2);
checkAwakeLogo.Location = new Point(243, 43);
checkAwakeLogo.Margin = new Padding(4, 0, 4, 0);
checkAwakeLogo.Name = "checkAwakeLogo";
checkAwakeLogo.Padding = new Padding(15, 2, 6, 2);
checkAwakeLogo.Size = new Size(231, 41);
@@ -635,8 +639,8 @@ namespace GHelper
// checkBootLogo
//
checkBootLogo.Dock = DockStyle.Fill;
checkBootLogo.Location = new Point(243, 90);
checkBootLogo.Margin = new Padding(4, 2, 4, 2);
checkBootLogo.Location = new Point(243, 84);
checkBootLogo.Margin = new Padding(4, 0, 4, 0);
checkBootLogo.Name = "checkBootLogo";
checkBootLogo.Padding = new Padding(15, 2, 6, 2);
checkBootLogo.Size = new Size(231, 41);
@@ -647,8 +651,8 @@ namespace GHelper
// checkSleepLogo
//
checkSleepLogo.Dock = DockStyle.Fill;
checkSleepLogo.Location = new Point(243, 135);
checkSleepLogo.Margin = new Padding(4, 2, 4, 2);
checkSleepLogo.Location = new Point(243, 125);
checkSleepLogo.Margin = new Padding(4, 0, 4, 0);
checkSleepLogo.Name = "checkSleepLogo";
checkSleepLogo.Padding = new Padding(15, 2, 6, 2);
checkSleepLogo.Size = new Size(231, 41);
@@ -659,8 +663,8 @@ namespace GHelper
// checkShutdownLogo
//
checkShutdownLogo.Dock = DockStyle.Fill;
checkShutdownLogo.Location = new Point(243, 180);
checkShutdownLogo.Margin = new Padding(4, 2, 4, 2);
checkShutdownLogo.Location = new Point(243, 166);
checkShutdownLogo.Margin = new Padding(4, 0, 4, 0);
checkShutdownLogo.Name = "checkShutdownLogo";
checkShutdownLogo.Padding = new Padding(15, 2, 6, 2);
checkShutdownLogo.Size = new Size(231, 41);
@@ -683,8 +687,8 @@ namespace GHelper
// checkAwakeBar
//
checkAwakeBar.Dock = DockStyle.Fill;
checkAwakeBar.Location = new Point(482, 45);
checkAwakeBar.Margin = new Padding(4, 2, 4, 2);
checkAwakeBar.Location = new Point(482, 43);
checkAwakeBar.Margin = new Padding(4, 0, 4, 0);
checkAwakeBar.Name = "checkAwakeBar";
checkAwakeBar.Padding = new Padding(15, 2, 6, 2);
checkAwakeBar.Size = new Size(231, 41);
@@ -695,8 +699,8 @@ namespace GHelper
// checkBootBar
//
checkBootBar.Dock = DockStyle.Fill;
checkBootBar.Location = new Point(482, 90);
checkBootBar.Margin = new Padding(4, 2, 4, 2);
checkBootBar.Location = new Point(482, 84);
checkBootBar.Margin = new Padding(4, 0, 4, 0);
checkBootBar.Name = "checkBootBar";
checkBootBar.Padding = new Padding(15, 2, 6, 2);
checkBootBar.Size = new Size(231, 41);
@@ -707,8 +711,8 @@ namespace GHelper
// checkSleepBar
//
checkSleepBar.Dock = DockStyle.Fill;
checkSleepBar.Location = new Point(482, 135);
checkSleepBar.Margin = new Padding(4, 2, 4, 2);
checkSleepBar.Location = new Point(482, 125);
checkSleepBar.Margin = new Padding(4, 0, 4, 0);
checkSleepBar.Name = "checkSleepBar";
checkSleepBar.Padding = new Padding(15, 2, 6, 2);
checkSleepBar.Size = new Size(231, 41);
@@ -719,8 +723,8 @@ namespace GHelper
// checkShutdownBar
//
checkShutdownBar.Dock = DockStyle.Fill;
checkShutdownBar.Location = new Point(482, 180);
checkShutdownBar.Margin = new Padding(4, 2, 4, 2);
checkShutdownBar.Location = new Point(482, 166);
checkShutdownBar.Margin = new Padding(4, 0, 4, 0);
checkShutdownBar.Name = "checkShutdownBar";
checkShutdownBar.Padding = new Padding(15, 2, 6, 2);
checkShutdownBar.Size = new Size(231, 41);
@@ -743,8 +747,8 @@ namespace GHelper
// checkAwakeLid
//
checkAwakeLid.Dock = DockStyle.Fill;
checkAwakeLid.Location = new Point(721, 45);
checkAwakeLid.Margin = new Padding(4, 2, 4, 2);
checkAwakeLid.Location = new Point(721, 43);
checkAwakeLid.Margin = new Padding(4, 0, 4, 0);
checkAwakeLid.Name = "checkAwakeLid";
checkAwakeLid.Padding = new Padding(15, 2, 6, 2);
checkAwakeLid.Size = new Size(233, 41);
@@ -755,8 +759,8 @@ namespace GHelper
// checkBootLid
//
checkBootLid.Dock = DockStyle.Fill;
checkBootLid.Location = new Point(721, 90);
checkBootLid.Margin = new Padding(4, 2, 4, 2);
checkBootLid.Location = new Point(721, 84);
checkBootLid.Margin = new Padding(4, 0, 4, 0);
checkBootLid.Name = "checkBootLid";
checkBootLid.Padding = new Padding(15, 2, 6, 2);
checkBootLid.Size = new Size(233, 41);
@@ -767,8 +771,8 @@ namespace GHelper
// checkSleepLid
//
checkSleepLid.Dock = DockStyle.Fill;
checkSleepLid.Location = new Point(721, 135);
checkSleepLid.Margin = new Padding(4, 2, 4, 2);
checkSleepLid.Location = new Point(721, 125);
checkSleepLid.Margin = new Padding(4, 0, 4, 0);
checkSleepLid.Name = "checkSleepLid";
checkSleepLid.Padding = new Padding(15, 2, 6, 2);
checkSleepLid.Size = new Size(233, 41);
@@ -779,8 +783,8 @@ namespace GHelper
// checkShutdownLid
//
checkShutdownLid.Dock = DockStyle.Fill;
checkShutdownLid.Location = new Point(721, 180);
checkShutdownLid.Margin = new Padding(4, 2, 4, 2);
checkShutdownLid.Location = new Point(721, 166);
checkShutdownLid.Margin = new Padding(4, 0, 4, 0);
checkShutdownLid.Name = "checkShutdownLid";
checkShutdownLid.Padding = new Padding(15, 2, 6, 2);
checkShutdownLid.Size = new Size(233, 41);
@@ -800,7 +804,7 @@ namespace GHelper
groupOther.Controls.Add(checkGpuApps);
groupOther.Controls.Add(checkFnLock);
groupOther.Dock = DockStyle.Top;
groupOther.Location = new Point(9, 908);
groupOther.Location = new Point(9, 880);
groupOther.Margin = new Padding(4, 2, 4, 2);
groupOther.Name = "groupOther";
groupOther.Padding = new Padding(20, 2, 4, 10);
@@ -894,13 +898,51 @@ namespace GHelper
checkFnLock.Text = "Process Fn+F hotkeys without Fn";
checkFnLock.UseVisualStyleBackColor = true;
//
// panelServices
//
panelServices.Controls.Add(labelServices);
panelServices.Controls.Add(buttonServices);
panelServices.Dock = DockStyle.Top;
panelServices.Location = new Point(9, 1176);
panelServices.Name = "panelServices";
panelServices.Size = new Size(966, 72);
panelServices.TabIndex = 3;
//
// labelServices
//
labelServices.AutoSize = true;
labelServices.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelServices.Location = new Point(23, 19);
labelServices.Name = "labelServices";
labelServices.Size = new Size(273, 32);
labelServices.TabIndex = 20;
labelServices.Text = "Asus Services Running";
//
// buttonServices
//
buttonServices.Activated = false;
buttonServices.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
buttonServices.BackColor = SystemColors.ControlLight;
buttonServices.BorderColor = Color.Transparent;
buttonServices.BorderRadius = 2;
buttonServices.FlatStyle = FlatStyle.Flat;
buttonServices.Location = new Point(695, 14);
buttonServices.Margin = new Padding(4, 2, 4, 2);
buttonServices.Name = "buttonServices";
buttonServices.Secondary = true;
buttonServices.Size = new Size(250, 44);
buttonServices.TabIndex = 19;
buttonServices.Text = "Start Services";
buttonServices.UseVisualStyleBackColor = false;
//
// Extra
//
AutoScaleDimensions = new SizeF(13F, 32F);
AutoScaleMode = AutoScaleMode.Font;
AutoSize = true;
AutoSizeMode = AutoSizeMode.GrowAndShrink;
ClientSize = new Size(984, 1244);
ClientSize = new Size(984, 1262);
Controls.Add(panelServices);
Controls.Add(groupOther);
Controls.Add(groupLight);
Controls.Add(groupBindings);
@@ -931,6 +973,8 @@ namespace GHelper
tableBacklight.ResumeLayout(false);
groupOther.ResumeLayout(false);
groupOther.PerformLayout();
panelServices.ResumeLayout(false);
panelServices.PerformLayout();
ResumeLayout(false);
PerformLayout();
}
@@ -999,5 +1043,8 @@ namespace GHelper
private RComboBox comboFNC;
private TextBox textFNC;
private CheckBox checkVariBright;
private Panel panelServices;
private RButton buttonServices;
private Label labelServices;
}
}

View File

@@ -1,6 +1,5 @@
using CustomControls;
using GHelper.Gpu;
using Microsoft.VisualBasic.Devices;
using System.Diagnostics;
namespace GHelper
@@ -19,6 +18,8 @@ namespace GHelper
{"screen", Properties.Strings.ToggleScreen},
{"miniled", Properties.Strings.ToggleMiniled},
{"fnlock", Properties.Strings.ToggleFnLock},
{"brightness_down", Properties.Strings.BrightnessDown},
{"brightness_up", Properties.Strings.BrightnessUp},
{"custom", Properties.Strings.Custom}
};
@@ -229,7 +230,61 @@ namespace GHelper
pictureHelp.Click += PictureHelp_Click;
buttonServices.Click += ButtonServices_Click;
InitVariBright();
InitServices();
}
private void InitServices()
{
if (OptimizationService.IsRunning()) buttonServices.Text = Properties.Strings.Stop;
else buttonServices.Text = Properties.Strings.Start;
labelServices.Text = Properties.Strings.AsusServicesRunning + ": " + OptimizationService.GetRunningCount();
buttonServices.Enabled = true;
Program.inputDispatcher.Init();
}
public void ServiesToggle()
{
buttonServices.Enabled = false;
if (OptimizationService.IsRunning())
{
labelServices.Text = Properties.Strings.StoppingServices + " ...";
Task.Run(() =>
{
OptimizationService.StopAsusServices();
BeginInvoke(delegate
{
InitServices();
});
});
}
else
{
labelServices.Text = Properties.Strings.StartingServices + " ...";
Task.Run(() =>
{
OptimizationService.StartAsusServices();
BeginInvoke(delegate
{
InitServices();
});
});
}
}
private void ButtonServices_Click(object? sender, EventArgs e)
{
if (ProcessHelper.IsUserAdministrator())
ServiesToggle();
else
ProcessHelper.RunAsAdmin("services");
}
private void InitVariBright()

View File

@@ -360,17 +360,9 @@ namespace GHelper
{
if (sender is null) return;
CheckBox chk = (CheckBox)sender;
AppConfig.setConfigPerf("auto_apply_power", chk.Checked ? 1 : 0);
if (chk.Checked)
{
Program.settingsForm.AutoPower();
}
else
{
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AppConfig.getConfig("performance_mode"), "PerfMode");
Program.settingsForm.AutoFans();
}
AppConfig.setConfigPerf("auto_apply_power", chk.Checked ? 1 : 0);
Program.settingsForm.SetPerformanceMode();
}
@@ -380,16 +372,8 @@ namespace GHelper
CheckBox chk = (CheckBox)sender;
AppConfig.setConfigPerf("auto_apply", chk.Checked ? 1 : 0);
Program.settingsForm.SetPerformanceMode();
if (chk.Checked)
{
Program.settingsForm.AutoFans();
}
else
{
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AppConfig.getConfig("performance_mode"), "PerfMode");
Program.settingsForm.AutoPower();
}
}
@@ -440,7 +424,7 @@ namespace GHelper
int limit_cpu;
int limit_fast;
bool apply = AppConfig.getConfigPerf("auto_apply_power") == 1;
bool apply = AppConfig.isConfigPerf("auto_apply_power");
if (changed)
{
@@ -621,22 +605,28 @@ namespace GHelper
AppConfig.setConfigPerf("auto_apply", 0);
AppConfig.setConfigPerf("auto_apply_power", 0);
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AppConfig.getConfig("performance_mode"), "PerfMode");
if (Program.acpi.IsXGConnected()) AsusUSB.ResetXGM();
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AppConfig.getConfig("performance_mode"), "Mode");
if (Program.acpi.IsXGConnected())
AsusUSB.ResetXGM();
trackGPUCore.Value = 0;
trackGPUMemory.Value = 0;
trackGPUBoost.Value = AsusACPI.MaxGPUBoost;
trackGPUTemp.Value = AsusACPI.MaxGPUTemp;
if (gpuVisible)
{
trackGPUCore.Value = 0;
trackGPUMemory.Value = 0;
trackGPUBoost.Value = AsusACPI.MaxGPUBoost;
trackGPUTemp.Value = AsusACPI.MaxGPUTemp;
AppConfig.setConfigPerf("gpu_boost", trackGPUBoost.Value);
AppConfig.setConfigPerf("gpu_temp", trackGPUTemp.Value);
AppConfig.setConfigPerf("gpu_core", trackGPUCore.Value);
AppConfig.setConfigPerf("gpu_memory", trackGPUMemory.Value);
VisualiseGPUSettings();
AppConfig.setConfigPerf("gpu_boost", trackGPUBoost.Value);
AppConfig.setConfigPerf("gpu_temp", trackGPUTemp.Value);
AppConfig.setConfigPerf("gpu_core", trackGPUCore.Value);
AppConfig.setConfigPerf("gpu_memory", trackGPUMemory.Value);
VisualiseGPUSettings();
Program.settingsForm.SetGPUClocks(true);
Program.settingsForm.SetGPUPower();
}
Program.settingsForm.SetGPUClocks(true);
Program.settingsForm.SetGPUPower();
}
private void ChartCPU_MouseUp(object? sender, MouseEventArgs e)

View File

@@ -16,7 +16,7 @@
<PlatformTarget>AnyCPU</PlatformTarget>
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<AssemblyVersion>0.79</AssemblyVersion>
<AssemblyVersion>0.81</AssemblyVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -91,43 +91,6 @@ public class NvidiaGpuControl : IGpuControl
}
private static void RunCMD(string name, string args)
{
var cmd = new Process();
cmd.StartInfo.UseShellExecute = false;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cmd.StartInfo.FileName = name;
cmd.StartInfo.Arguments = args;
cmd.Start();
Logger.WriteLine(cmd.StandardOutput.ReadToEnd());
cmd.WaitForExit();
}
public bool RestartGPUPnP()
{
if (!IsValid) return false;
try
{
PhysicalGPU internalGpu = _internalGpu!;
var pnpDeviceId = internalGpu.BusInformation.PCIIdentifiers.ToString();
Logger.WriteLine("Device ID:" + pnpDeviceId);
RunCMD("pnputil", $"/disable-device /deviceid \"{pnpDeviceId}\"");
Thread.Sleep(3000);
RunCMD("pnputil", $"/enable-device /deviceid \"{pnpDeviceId}\"");
Thread.Sleep(2000);
return true;
}
catch (Exception ex)
{
Logger.WriteLine(ex.ToString());
return false;
}
}
public bool RestartGPU()
{
@@ -135,7 +98,7 @@ public class NvidiaGpuControl : IGpuControl
{
string script = @"$device = Get-PnpDevice | Where-Object { $_.FriendlyName -imatch 'NVIDIA' -and $_.Class -eq 'Display' }; Disable-PnpDevice $device.InstanceId -Confirm:$false; Start-Sleep -Seconds 3; Enable-PnpDevice $device.InstanceId -Confirm:$false";
Logger.WriteLine(script);
RunCMD("powershell", script);
ProcessHelper.RunCMD("powershell", script);
//Thread.Sleep(2000);
return true;
}

View File

@@ -339,6 +339,12 @@ namespace GHelper
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, muteStatus ? "Muted" : "Unmuted", muteStatus ? ToastIcon.MicrophoneMute : ToastIcon.Microphone);
}
break;
case "brightness_up":
OptimizationEvent(32);
break;
case "brightness_down":
OptimizationEvent(16);
break;
case "custom":
CustomKey(name);
break;

View File

@@ -588,6 +588,42 @@ public class NativeMethods
return dm;
}
public enum COLORPROFILETYPE
{
CPT_ICC,
CPT_DMP,
CPT_CAMP,
CPT_GMMP
}
public enum COLORPROFILESUBTYPE
{
CPST_PERCEPTUAL,
CPST_RELATIVE_COLORIMETRIC,
CPST_SATURATION,
CPST_ABSOLUTE_COLORIMETRIC,
CPST_NONE,
CPST_RGB_WORKING_SPACE,
CPST_CUSTOM_WORKING_SPACE,
CPST_STANDARD_DISPLAY_COLOR_MODE,
CPST_EXTENDED_DISPLAY_COLOR_MODE
}
public enum WCS_PROFILE_MANAGEMENT_SCOPE
{
WCS_PROFILE_MANAGEMENT_SCOPE_SYSTEM_WIDE,
WCS_PROFILE_MANAGEMENT_SCOPE_CURRENT_USER
}
[DllImport("mscms.dll", CharSet = CharSet.Unicode)]
public static extern bool WcsSetDefaultColorProfile(
WCS_PROFILE_MANAGEMENT_SCOPE scope,
string pDeviceName,
COLORPROFILETYPE cptColorProfileType,
COLORPROFILESUBTYPE cpstColorProfileSubType,
uint dwProfileID,
string pProfileName
);
public const int ENUM_CURRENT_SETTINGS = -1;
public const string defaultDevice = "\\\\.\\DISPLAY1";

View File

@@ -1,13 +1,27 @@
using System.Text.RegularExpressions;
using System.Text;
using Microsoft.Win32;
using System.Diagnostics;
using Microsoft.Win32;
using System.Text;
using System.Text.RegularExpressions;
namespace GHelper
{
public static class OptimizationService
{
public static void SetChargeLimit (int newValue)
static List<string> services = new() {
"AsusAppService",
"ASUSLinkNear",
"ASUSLinkRemote",
"ASUSSoftwareManager",
"ASUSSwitch",
"ASUSSystemAnalysis",
"ASUSSystemDiagnosis",
"ArmouryCrateControlInterface",
"AsusCertService",
"ASUSOptimization"
};
public static void SetChargeLimit(int newValue)
{
// Set the path to the .ini file
string path = @"C:\ProgramData\ASUS\ASUS System Control Interface\ASUSOptimization\Customization.ini";
@@ -41,8 +55,18 @@ namespace GHelper
return (Process.GetProcessesByName("AsusOptimization").Count() > 0);
}
public static int GetRunningCount()
{
int count = 0;
foreach (string service in services)
{
if (Process.GetProcessesByName(service).Count() > 0) count++;
}
return count;
}
public static void SetBacklightOffDelay(int value = 60)
public static void SetBacklightOffDelay(int value = 60)
{
try
{
@@ -60,6 +84,23 @@ namespace GHelper
}
public static void StopAsusServices()
{
foreach (string service in services)
{
ProcessHelper.StopDisableService(service);
}
}
public static void StartAsusServices()
{
foreach (string service in services)
{
ProcessHelper.StartEnableService(service);
}
}
}
}

View File

@@ -92,6 +92,48 @@ namespace GHelper
}
}
public static void StopDisableService(string serviceName)
{
try
{
string script = $"Set-Service -Name \"{serviceName}\" -Status stopped -StartupType disabled";
Logger.WriteLine(script);
RunCMD("powershell", script);
}
catch (Exception ex)
{
Logger.WriteLine(ex.ToString());
}
}
public static void StartEnableService(string serviceName)
{
try
{
string script = $"Set-Service -Name \"{serviceName}\" -Status running -StartupType Automatic";
Logger.WriteLine(script);
RunCMD("powershell", script);
}
catch (Exception ex)
{
Logger.WriteLine(ex.ToString());
}
}
public static void RunCMD(string name, string args)
{
var cmd = new Process();
cmd.StartInfo.UseShellExecute = false;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cmd.StartInfo.FileName = name;
cmd.StartInfo.Arguments = args;
cmd.Start();
Logger.WriteLine(cmd.StandardOutput.ReadToEnd());
cmd.WaitForExit();
}
}
}

View File

@@ -3,6 +3,7 @@ using System.Diagnostics;
using System.Globalization;
using System.Reflection;
using System.Security.Principal;
using System.Windows.Forms;
using static NativeMethods;
namespace GHelper
@@ -135,7 +136,7 @@ namespace GHelper
public static void SetAutoModes()
public static void SetAutoModes(bool powerChanged = false)
{
if (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastAuto) < 3000) return;
@@ -147,7 +148,7 @@ namespace GHelper
inputDispatcher.Init();
settingsForm.SetBatteryChargeLimit(AppConfig.getConfig("charge_limit"));
settingsForm.AutoPerformance();
settingsForm.AutoPerformance(powerChanged);
bool switched = settingsForm.AutoGPUMode();
@@ -163,11 +164,9 @@ namespace GHelper
private static void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
{
if (SystemInformation.PowerStatus.PowerLineStatus == isPlugged) return;
Logger.WriteLine("Power Mode Changed");
SetAutoModes();
SetAutoModes(true);
}
@@ -190,6 +189,11 @@ namespace GHelper
case "gpurestart":
settingsForm.RestartGPU(false);
break;
case "services":
settingsForm.keyb = new Extra();
settingsForm.keyb.Show();
settingsForm.keyb.ServiesToggle();
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_charged_battery_96 {
get {
object obj = ResourceManager.GetObject("icons8_charged_battery_96", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@@ -140,6 +150,16 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_electrical_96 {
get {
object obj = ResourceManager.GetObject("icons8_electrical_96", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>

View File

@@ -238,4 +238,10 @@
<data name="icons8-software-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-software-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8_charged_battery_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-charged-battery-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8_electrical_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-electrical-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@@ -177,6 +177,15 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Asus Services Running.
/// </summary>
internal static string AsusServicesRunning {
get {
return ResourceManager.GetString("AsusServicesRunning", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Breathe.
/// </summary>
@@ -339,6 +348,24 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Brightness Down.
/// </summary>
internal static string BrightnessDown {
get {
return ResourceManager.GetString("BrightnessDown", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Brightness Up.
/// </summary>
internal static string BrightnessUp {
get {
return ResourceManager.GetString("BrightnessUp", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Color.
/// </summary>
@@ -1023,6 +1050,24 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Start.
/// </summary>
internal static string Start {
get {
return ResourceManager.GetString("Start", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Starting Services.
/// </summary>
internal static string StartingServices {
get {
return ResourceManager.GetString("StartingServices", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Startup Error.
/// </summary>
@@ -1032,6 +1077,24 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Stop.
/// </summary>
internal static string Stop {
get {
return ResourceManager.GetString("Stop", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Stopping Services.
/// </summary>
internal static string StoppingServices {
get {
return ResourceManager.GetString("StoppingServices", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Toggle Aura.
/// </summary>

View File

@@ -201,12 +201,21 @@
<data name="BatteryChargeLimit" xml:space="preserve">
<value>Límite de carga</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>Actualizaciones de BIOS y Drivers</value>
</data>
<data name="Boot" xml:space="preserve">
<value>Al arrancar</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>Brillo</value>
</data>
<data name="BrightnessDown" xml:space="preserve">
<value>Bajar brillo</value>
</data>
<data name="BrightnessUp" xml:space="preserve">
<value>Subir brillo</value>
</data>
<data name="Color" xml:space="preserve">
<value>Color</value>
</data>
@@ -228,6 +237,9 @@
<data name="DownloadUpdate" xml:space="preserve">
<value>Descargar actualización</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>Drivers y Software</value>
</data>
<data name="EcoGPUTooltip" xml:space="preserve">
<value>Deshabilita la dGPU para ahorrar batería</value>
</data>
@@ -462,6 +474,9 @@
<data name="UltimateMode" xml:space="preserve">
<value>Ultimate</value>
</data>
<data name="Updates" xml:space="preserve">
<value>Actualizaciones</value>
</data>
<data name="VersionLabel" xml:space="preserve">
<value>Versión</value>
</data>

View File

@@ -0,0 +1,489 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<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>
<data name="ACPIError" xml:space="preserve">
<value>ASUS ACPI에 연결할 수 없어 응용 프로그램이 작동하지 않습니다. Asus System Control Interface를 먼저 설치하십시오.</value>
</data>
<data name="AlertDGPU" xml:space="preserve">
<value>GPU 사용량이 높습니다. 비활성화 하시겠습니까?</value>
</data>
<data name="AlertDGPUTitle" xml:space="preserve">
<value>Eco 모드</value>
</data>
<data name="AlertUltimateOff" xml:space="preserve">
<value>Ultimate 모드를 끄기 위해서는 다시 시작해야 합니다.</value>
</data>
<data name="AlertUltimateOn" xml:space="preserve">
<value>Ultimate 모드를 켜기 위해서는 다시 시작해야 합니다.</value>
</data>
<data name="AlertUltimateTitle" xml:space="preserve">
<value>다시 시작하시겠습니까?</value>
</data>
<data name="AnimationSpeed" xml:space="preserve">
<value>애니메이션 속도</value>
</data>
<data name="AnimeMatrix" xml:space="preserve">
<value>Anime Matrix</value>
</data>
<data name="AppAlreadyRunning" xml:space="preserve">
<value>프로그램이 이미 실행중입니다.</value>
</data>
<data name="AppAlreadyRunningText" xml:space="preserve">
<value>G-Helper가 이미 실행중입니다. 시스템 트레이에서 아이콘을 확인하십시오.</value>
</data>
<data name="ApplyFanCurve" xml:space="preserve">
<value>사용자 설정 팬 커브 적용</value>
</data>
<data name="ApplyPowerLimits" xml:space="preserve">
<value>전력 제한 적용</value>
</data>
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
<value>윈도우 전원 모드 자동조절</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<value>Breathe</value>
</data>
<data name="AuraColorCycle" xml:space="preserve">
<value>Color Cycle</value>
</data>
<data name="AuraFast" xml:space="preserve">
<value>빠르게</value>
</data>
<data name="AuraNormal" xml:space="preserve">
<value>보통</value>
</data>
<data name="AuraRainbow" xml:space="preserve">
<value>Rainbow</value>
</data>
<data name="AuraSlow" xml:space="preserve">
<value>느리게</value>
</data>
<data name="AuraStatic" xml:space="preserve">
<value>Static</value>
</data>
<data name="AuraStrobe" xml:space="preserve">
<value>Strobe</value>
</data>
<data name="AutoMode" xml:space="preserve">
<value>자동</value>
</data>
<data name="AutoRefreshTooltip" xml:space="preserve">
<value>배터리 사용 중에만 60Hz 설정</value>
</data>
<data name="Awake" xml:space="preserve">
<value>Awake</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<value>배터리 사용 중 백라이트 자동 꺼짐</value>
</data>
<data name="BacklightTimeoutPlugged" xml:space="preserve">
<value>전원 연결 시 백라이트 자동 꺼짐 (0 - 항상 켜짐)</value>
</data>
<data name="Balanced" xml:space="preserve">
<value>균형</value>
</data>
<data name="BatteryChargeLimit" xml:space="preserve">
<value>배터리 충전 제한</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>바이오스/드라이버 업데이트</value>
</data>
<data name="Boot" xml:space="preserve">
<value>Boot</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>밝기</value>
</data>
<data name="Color" xml:space="preserve">
<value>색상</value>
</data>
<data name="CPUBoost" xml:space="preserve">
<value>CPU 부스트</value>
</data>
<data name="Custom" xml:space="preserve">
<value>사용자 설정</value>
</data>
<data name="Default" xml:space="preserve">
<value>기본</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>화면 OD 끄기</value>
</data>
<data name="Discharging" xml:space="preserve">
<value>방전 중</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>업데이트 다운로드</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>드라이버와 소프트웨어</value>
</data>
<data name="EcoGPUTooltip" xml:space="preserve">
<value>배터리 절약을 위해 dGPU 비활성화</value>
</data>
<data name="EcoMode" xml:space="preserve">
<value>Eco</value>
</data>
<data name="Extra" xml:space="preserve">
<value>추가 설정</value>
</data>
<data name="ExtraSettings" xml:space="preserve">
<value>추가 설정</value>
</data>
<data name="FactoryDefaults" xml:space="preserve">
<value>공장 설정</value>
</data>
<data name="FanCurves" xml:space="preserve">
<value>팬 커브</value>
</data>
<data name="FanProfileCPU" xml:space="preserve">
<value>CPU 팬 프로필</value>
</data>
<data name="FanProfileGPU" xml:space="preserve">
<value>GPU 팬 프로필</value>
</data>
<data name="FanProfileMid" xml:space="preserve">
<value>중간 팬 프로필</value>
</data>
<data name="FanProfiles" xml:space="preserve">
<value>팬 프로필</value>
</data>
<data name="FansAndPower" xml:space="preserve">
<value>팬 속도/전력</value>
</data>
<data name="FanSpeed" xml:space="preserve">
<value>팬: </value>
</data>
<data name="FansPower" xml:space="preserve">
<value>팬 + 전력</value>
</data>
<data name="FnLock" xml:space="preserve">
<value>Fn 키를 누르지 않고 Fn+F 핫키 작동</value>
</data>
<data name="GPUBoost" xml:space="preserve">
<value>다이나믹 부스트</value>
</data>
<data name="GPUChanging" xml:space="preserve">
<value>충전 중</value>
</data>
<data name="GPUCoreClockOffset" xml:space="preserve">
<value>코어 클럭 오프셋</value>
</data>
<data name="GPUMemoryClockOffset" xml:space="preserve">
<value>메모리 클럭 오프셋</value>
</data>
<data name="GPUMode" xml:space="preserve">
<value>GPU 모드</value>
</data>
<data name="GPUModeEco" xml:space="preserve">
<value>iGPU만 사용</value>
</data>
<data name="GPUModeStandard" xml:space="preserve">
<value>iGPU + dGPU</value>
</data>
<data name="GPUModeUltimate" xml:space="preserve">
<value>dGPU만 사용</value>
</data>
<data name="GPUSettings" xml:space="preserve">
<value>GPU 설정</value>
</data>
<data name="GPUTempTarget" xml:space="preserve">
<value>목표 온도</value>
</data>
<data name="KeyBindings" xml:space="preserve">
<value>키 설정</value>
</data>
<data name="Keyboard" xml:space="preserve">
<value>키보드</value>
</data>
<data name="KeyboardAuto" xml:space="preserve">
<value>배터리 사용 중에만 백라이트 밝기 낮추기</value>
</data>
<data name="KillGpuApps" xml:space="preserve">
<value>Eco 모드로 전환 시 GPU를 사용하는 모든 앱 중지</value>
</data>
<data name="LaptopBacklight" xml:space="preserve">
<value>백라이트</value>
</data>
<data name="LaptopKeyboard" xml:space="preserve">
<value>키보드</value>
</data>
<data name="LaptopScreen" xml:space="preserve">
<value>화면</value>
</data>
<data name="Lid" xml:space="preserve">
<value>덮개</value>
</data>
<data name="Lightbar" xml:space="preserve">
<value>라이트바</value>
</data>
<data name="Logo" xml:space="preserve">
<value>로고</value>
</data>
<data name="MatrixAudio" xml:space="preserve">
<value>오디오 비주얼라이저</value>
</data>
<data name="MatrixBanner" xml:space="preserve">
<value>Binary Banner</value>
</data>
<data name="MatrixBright" xml:space="preserve">
<value>밝게</value>
</data>
<data name="MatrixClock" xml:space="preserve">
<value>시계</value>
</data>
<data name="MatrixDim" xml:space="preserve">
<value>어둡게</value>
</data>
<data name="MatrixLogo" xml:space="preserve">
<value>Rog 로고</value>
</data>
<data name="MatrixMedium" xml:space="preserve">
<value>중간</value>
</data>
<data name="MatrixOff" xml:space="preserve">
<value>끄기</value>
</data>
<data name="MatrixPicture" xml:space="preserve">
<value>사진</value>
</data>
<data name="MaxRefreshTooltip" xml:space="preserve">
<value>최대 주사율 설정</value>
</data>
<data name="MinRefreshTooltip" xml:space="preserve">
<value>60Hz 주사율 설정</value>
</data>
<data name="Multizone" xml:space="preserve">
<value>멀티존</value>
</data>
<data name="MuteMic" xml:space="preserve">
<value>마이크 음소거</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>G-Helper 열기</value>
</data>
<data name="Optimized" xml:space="preserve">
<value>최적화</value>
</data>
<data name="OptimizedGPUTooltip" xml:space="preserve">
<value>배터리 사용 중에만 Eco 모드 설정</value>
</data>
<data name="OptimizedUSBC" xml:space="preserve">
<value>최적화 모드에서 PD 충전 시 GPU 비활성화</value>
</data>
<data name="Other" xml:space="preserve">
<value>기타 설정</value>
</data>
<data name="Overdrive" xml:space="preserve">
<value>오버드라이브</value>
</data>
<data name="PerformanceMode" xml:space="preserve">
<value>성능 모드</value>
</data>
<data name="PictureGif" xml:space="preserve">
<value>사진 / Gif</value>
</data>
<data name="PlayPause" xml:space="preserve">
<value>재생 / 정지</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>전력 제한 (PPT)</value>
</data>
<data name="PPTExperimental" xml:space="preserve">
<value>전력 제한 (PPT)은 실험적인 기능입니다. 주의하여 사용하세요!</value>
</data>
<data name="PrintScreen" xml:space="preserve">
<value>PrintScreen</value>
</data>
<data name="Quit" xml:space="preserve">
<value>종료</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>dGPU가 사용중이기 때문에 Eco 모드로 전환할 수 없습니다. 장치 관리자에서 dGPU를 재시작하시겠습니까?</value>
</data>
<data name="RPM" xml:space="preserve">
<value>RPM</value>
</data>
<data name="RunOnStartup" xml:space="preserve">
<value>시스템 시작 시 실행</value>
</data>
<data name="Shutdown" xml:space="preserve">
<value>꺼짐</value>
</data>
<data name="Silent" xml:space="preserve">
<value>조용</value>
</data>
<data name="Sleep" xml:space="preserve">
<value>Sleep</value>
</data>
<data name="StandardGPUTooltip" xml:space="preserve">
<value>Standard 모드에서 dGPU 켜기</value>
</data>
<data name="StandardMode" xml:space="preserve">
<value>Standard</value>
</data>
<data name="StartupError" xml:space="preserve">
<value>시작 오류</value>
</data>
<data name="ToggleAura" xml:space="preserve">
<value>Aura 토글 키</value>
</data>
<data name="ToggleFnLock" xml:space="preserve">
<value>Fn-Lock 토글 키</value>
</data>
<data name="ToggleMiniled" xml:space="preserve">
<value>Miniled 토글 키 (지원하는 기기만)</value>
</data>
<data name="ToggleScreen" xml:space="preserve">
<value>화면 토글 키</value>
</data>
<data name="Turbo" xml:space="preserve">
<value>터보</value>
</data>
<data name="TurnedOff" xml:space="preserve">
<value>꺼짐</value>
</data>
<data name="TurnOffOnBattery" xml:space="preserve">
<value>배터리 사용 중에는 끄기</value>
</data>
<data name="UltimateGPUTooltip" xml:space="preserve">
<value>노트북 화면을 dGPU와 연결, FPS 최대화</value>
</data>
<data name="UltimateMode" xml:space="preserve">
<value>Ultimate</value>
</data>
<data name="Updates" xml:space="preserve">
<value>업데이트</value>
</data>
<data name="VersionLabel" xml:space="preserve">
<value>버전</value>
</data>
<data name="VolumeDown" xml:space="preserve">
<value>볼륨 작게</value>
</data>
<data name="VolumeMute" xml:space="preserve">
<value>음소거</value>
</data>
<data name="VolumeUp" xml:space="preserve">
<value>볼륨 크게</value>
</data>
<data name="WindowTop" xml:space="preserve">
<value>창을 항상 맨 위로 유지</value>
</data>
</root>

View File

@@ -156,6 +156,9 @@
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
<value>Auto adjust Windows Power Modes</value>
</data>
<data name="AsusServicesRunning" xml:space="preserve">
<value>Asus Services Running</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<value>Breathe</value>
</data>
@@ -210,6 +213,12 @@
<data name="Brightness" xml:space="preserve">
<value>Brightness</value>
</data>
<data name="BrightnessDown" xml:space="preserve">
<value>Brightness Down</value>
</data>
<data name="BrightnessUp" xml:space="preserve">
<value>Brightness Up</value>
</data>
<data name="Color" xml:space="preserve">
<value>Color</value>
</data>
@@ -438,9 +447,21 @@
<data name="StandardMode" xml:space="preserve">
<value>Standard</value>
</data>
<data name="Start" xml:space="preserve">
<value>Start</value>
</data>
<data name="StartingServices" xml:space="preserve">
<value>Starting Services</value>
</data>
<data name="StartupError" xml:space="preserve">
<value>Startup Error</value>
</data>
<data name="Stop" xml:space="preserve">
<value>Stop</value>
</data>
<data name="StoppingServices" xml:space="preserve">
<value>Stopping Services</value>
</data>
<data name="ToggleAura" xml:space="preserve">
<value>Toggle Aura</value>
</data>

View File

@@ -201,6 +201,9 @@
<data name="BatteryChargeLimit" xml:space="preserve">
<value>Ліміт заряду батареї</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>Оновлення BIOS та драйверів</value>
</data>
<data name="Boot" xml:space="preserve">
<value>Старт</value>
</data>
@@ -228,6 +231,9 @@
<data name="DownloadUpdate" xml:space="preserve">
<value>Завантажити</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>Драйвери та програми</value>
</data>
<data name="EcoGPUTooltip" xml:space="preserve">
<value>Вимикає dGPU, щоб зберегти заряд</value>
</data>
@@ -408,6 +414,9 @@
<data name="ToggleAura" xml:space="preserve">
<value>Аура</value>
</data>
<data name="ToggleFnLock" xml:space="preserve">
<value>Fn-Lock</value>
</data>
<data name="ToggleMiniled" xml:space="preserve">
<value>Міні-лед (якщо є)</value>
</data>
@@ -429,6 +438,9 @@
<data name="UltimateMode" xml:space="preserve">
<value>Ультімейт</value>
</data>
<data name="Updates" xml:space="preserve">
<value>Оновлення</value>
</data>
<data name="VersionLabel" xml:space="preserve">
<value>Версія</value>
</data>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
<!--
Microsoft ResX Schema
Version 2.0
@@ -59,419 +59,431 @@
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<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>
<data name="ACPIError" xml:space="preserve">
<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>
<data name="ACPIError" xml:space="preserve">
<value>無法連結到華碩 ACPI。 没有它,應用程式將無法執行。 嘗試安裝Asus System Control Interface</value>
</data>
<data name="AlertDGPU" xml:space="preserve">
<data name="AlertDGPU" xml:space="preserve">
<value>看起来 GPU 正在大量使用,是否禁用它?</value>
</data>
<data name="AlertDGPUTitle" xml:space="preserve">
<data name="AlertDGPUTitle" xml:space="preserve">
<value>節能模式</value>
</data>
<data name="AlertUltimateOff" xml:space="preserve">
<data name="AlertUltimateOff" xml:space="preserve">
<value>關閉獨顯需要重新啟動</value>
</data>
<data name="AlertUltimateOn" xml:space="preserve">
<data name="AlertUltimateOn" xml:space="preserve">
<value>獨顯直連需要重啟</value>
</data>
<data name="AlertUltimateTitle" xml:space="preserve">
<data name="AlertUltimateTitle" xml:space="preserve">
<value>現在重新啟動嗎?</value>
</data>
<data name="AnimationSpeed" xml:space="preserve">
<data name="AnimationSpeed" xml:space="preserve">
<value>動畫速度</value>
</data>
<data name="AnimeMatrix" xml:space="preserve">
<data name="AnimeMatrix" xml:space="preserve">
<value>AnimeMatrix</value>
</data>
<data name="AppAlreadyRunning" xml:space="preserve">
<data name="AppAlreadyRunning" xml:space="preserve">
<value>程式已正在執行</value>
</data>
<data name="AppAlreadyRunningText" xml:space="preserve">
<data name="AppAlreadyRunningText" xml:space="preserve">
<value>G-Helper已經在執行。 請確認右下工作列中的圖示。</value>
</data>
<data name="ApplyFanCurve" xml:space="preserve">
<data name="ApplyFanCurve" xml:space="preserve">
<value>套用自定義風扇曲線</value>
</data>
<data name="ApplyPowerLimits" xml:space="preserve">
<data name="ApplyPowerLimits" xml:space="preserve">
<value>套用功率限制</value>
</data>
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
<value>自動調整Windows電源模式</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<data name="AuraBreathe" xml:space="preserve">
<value>呼吸</value>
</data>
<data name="AuraColorCycle" xml:space="preserve">
<data name="AuraColorCycle" xml:space="preserve">
<value>循環</value>
</data>
<data name="AuraFast" xml:space="preserve">
<data name="AuraFast" xml:space="preserve">
<value>快速</value>
</data>
<data name="AuraNormal" xml:space="preserve">
<data name="AuraNormal" xml:space="preserve">
<value>正常</value>
</data>
<data name="AuraRainbow" xml:space="preserve">
<data name="AuraRainbow" xml:space="preserve">
<value>彩虹</value>
</data>
<data name="AuraSlow" xml:space="preserve">
<data name="AuraSlow" xml:space="preserve">
<value>慢</value>
</data>
<data name="AuraStatic" xml:space="preserve">
<data name="AuraStatic" xml:space="preserve">
<value>靜態</value>
</data>
<data name="AuraStrobe" xml:space="preserve">
<data name="AuraStrobe" xml:space="preserve">
<value>閃爍</value>
</data>
<data name="AutoMode" xml:space="preserve">
<data name="AutoMode" xml:space="preserve">
<value>自動</value>
</data>
<data name="AutoRefreshTooltip" xml:space="preserve">
<data name="AutoRefreshTooltip" xml:space="preserve">
<value>電池模式時自動60Hz</value>
</data>
<data name="Awake" xml:space="preserve">
<data name="Awake" xml:space="preserve">
<value>喚醒時</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<data name="BacklightTimeout" xml:space="preserve">
<value>電池模式下自動關閉鍵盤背光的秒數(0 = 不關閉)</value>
</data>
<data name="BacklightTimeoutPlugged" xml:space="preserve">
<data name="BacklightTimeoutPlugged" xml:space="preserve">
<value>插電模式下自動關閉鍵盤背光的秒數(0 = 不關閉)</value>
</data>
<data name="Balanced" xml:space="preserve">
<data name="Balanced" xml:space="preserve">
<value>平衡模式</value>
</data>
<data name="BatteryChargeLimit" xml:space="preserve">
<data name="BatteryChargeLimit" xml:space="preserve">
<value>電池充電上限</value>
</data>
<data name="Boot" xml:space="preserve">
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>BIOS與驅動程式更新 Updates</value>
</data>
<data name="Boot" xml:space="preserve">
<value>開機時</value>
</data>
<data name="Brightness" xml:space="preserve">
<data name="Brightness" xml:space="preserve">
<value>亮度</value>
</data>
<data name="Color" xml:space="preserve">
<data name="Color" xml:space="preserve">
<value>顏色</value>
</data>
<data name="CPUBoost" xml:space="preserve">
<data name="CPUBoost" xml:space="preserve">
<value>CPU 加速</value>
</data>
<data name="Custom" xml:space="preserve">
<data name="Custom" xml:space="preserve">
<value>自定義設置</value>
</data>
<data name="Default" xml:space="preserve">
<data name="Default" xml:space="preserve">
<value>預設</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<data name="DisableOverdrive" xml:space="preserve">
<value>禁用螢幕加速OD</value>
</data>
<data name="Discharging" xml:space="preserve">
<data name="Discharging" xml:space="preserve">
<value>正在釋放電力</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<data name="DownloadUpdate" xml:space="preserve">
<value>下載更新</value>
</data>
<data name="EcoGPUTooltip" xml:space="preserve">
<data name="DriverAndSoftware" xml:space="preserve">
<value>驅動程式與軟體</value>
</data>
<data name="EcoGPUTooltip" xml:space="preserve">
<value>禁用獨顯以節省電池電量</value>
</data>
<data name="EcoMode" xml:space="preserve">
<data name="EcoMode" xml:space="preserve">
<value>節能模式</value>
</data>
<data name="Extra" xml:space="preserve">
<data name="Extra" xml:space="preserve">
<value>更多</value>
</data>
<data name="ExtraSettings" xml:space="preserve">
<data name="ExtraSettings" xml:space="preserve">
<value>更多設定</value>
</data>
<data name="FactoryDefaults" xml:space="preserve">
<data name="FactoryDefaults" xml:space="preserve">
<value>恢復原廠設定</value>
</data>
<data name="FanCurves" xml:space="preserve">
<data name="FanCurves" xml:space="preserve">
<value>風扇曲線</value>
</data>
<data name="FanProfileCPU" xml:space="preserve">
<value>CPU 風扇設置文件</value>
<data name="FanProfileCPU" xml:space="preserve">
<value>CPU 風扇設定檔</value>
</data>
<data name="FanProfileGPU" xml:space="preserve">
<value>GPU 風扇設置文件</value>
<data name="FanProfileGPU" xml:space="preserve">
<value>GPU 風扇設定檔</value>
</data>
<data name="FanProfileMid" xml:space="preserve">
<data name="FanProfileMid" xml:space="preserve">
<value>中等風扇設置</value>
</data>
<data name="FanProfiles" xml:space="preserve">
<data name="FanProfiles" xml:space="preserve">
<value>風扇設置</value>
</data>
<data name="FansAndPower" xml:space="preserve">
<data name="FansAndPower" xml:space="preserve">
<value>風扇和電源</value>
</data>
<data name="FanSpeed" xml:space="preserve">
<data name="FanSpeed" xml:space="preserve">
<value> 風扇: </value>
</data>
<data name="FansPower" xml:space="preserve">
<data name="FansPower" xml:space="preserve">
<value>自定義設置</value>
</data>
<data name="FnLock" xml:space="preserve">
<value>使用Fn+F1~F12功能時不須按下Fn鍵</value>
<data name="FnLock" xml:space="preserve">
<value>使用Fn+F1~F12功能時按下Fn鍵</value>
</data>
<data name="GPUBoost" xml:space="preserve">
<data name="GPUBoost" xml:space="preserve">
<value>Dynamic Boost</value>
</data>
<data name="GPUChanging" xml:space="preserve">
<data name="GPUChanging" xml:space="preserve">
<value>切換中...</value>
</data>
<data name="GPUCoreClockOffset" xml:space="preserve">
<data name="GPUCoreClockOffset" xml:space="preserve">
<value>核心時脈偏移量(Offset)</value>
</data>
<data name="GPUMemoryClockOffset" xml:space="preserve">
<data name="GPUMemoryClockOffset" xml:space="preserve">
<value>顯示卡記憶體偏移量(Offset)</value>
</data>
<data name="GPUMode" xml:space="preserve">
<data name="GPUMode" xml:space="preserve">
<value>GPU 模式</value>
</data>
<data name="GPUModeEco" xml:space="preserve">
<data name="GPUModeEco" xml:space="preserve">
<value>僅限內顯</value>
</data>
<data name="GPUModeStandard" xml:space="preserve">
<data name="GPUModeStandard" xml:space="preserve">
<value>內顯 + 獨顯</value>
</data>
<data name="GPUModeUltimate" xml:space="preserve">
<data name="GPUModeUltimate" xml:space="preserve">
<value>獨立顯卡</value>
</data>
<data name="GPUSettings" xml:space="preserve">
<data name="GPUSettings" xml:space="preserve">
<value>顯卡設定</value>
</data>
<data name="GPUTempTarget" xml:space="preserve">
<data name="GPUTempTarget" xml:space="preserve">
<value>GPU溫度上限</value>
</data>
<data name="KeyBindings" xml:space="preserve">
<data name="KeyBindings" xml:space="preserve">
<value>按鍵綁定</value>
</data>
<data name="Keyboard" xml:space="preserve">
<data name="Keyboard" xml:space="preserve">
<value>鍵盤</value>
</data>
<data name="KeyboardAuto" xml:space="preserve">
<data name="KeyboardAuto" xml:space="preserve">
<value>電池模式時自動降低鍵盤背光亮度以節省電量</value>
</data>
<data name="LaptopBacklight" xml:space="preserve">
<data name="LaptopBacklight" xml:space="preserve">
<value>背光</value>
</data>
<data name="KillGpuApps" xml:space="preserve">
<data name="KillGpuApps" xml:space="preserve">
<value>切換至節能模式時,關閉所有正在使用獨顯的程式</value>
</data>
<data name="LaptopKeyboard" xml:space="preserve">
<data name="LaptopKeyboard" xml:space="preserve">
<value>鍵盤背光:</value>
</data>
<data name="LaptopScreen" xml:space="preserve">
<data name="LaptopScreen" xml:space="preserve">
<value>螢幕顯示</value>
</data>
<data name="Lid" xml:space="preserve">
<data name="Lid" xml:space="preserve">
<value>螢幕背蓋</value>
</data>
<data name="Lightbar" xml:space="preserve">
<data name="Lightbar" xml:space="preserve">
<value>燈條</value>
</data>
<data name="Logo" xml:space="preserve">
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>
<data name="MatrixAudio" xml:space="preserve">
<value>Audio Visualizer</value>
<data name="MatrixAudio" xml:space="preserve">
<value>音效視覺化</value>
</data>
<data name="MatrixBanner" xml:space="preserve">
<data name="MatrixBanner" xml:space="preserve">
<value>横幅</value>
</data>
<data name="MatrixBright" xml:space="preserve">
<data name="MatrixBright" xml:space="preserve">
<value>明亮</value>
</data>
<data name="MatrixClock" xml:space="preserve">
<data name="MatrixClock" xml:space="preserve">
<value>時鐘</value>
</data>
<data name="MatrixDim" xml:space="preserve">
<data name="MatrixDim" xml:space="preserve">
<value>黯淡</value>
</data>
<data name="MatrixLogo" xml:space="preserve">
<data name="MatrixLogo" xml:space="preserve">
<value>ROG logo</value>
</data>
<data name="MatrixMedium" xml:space="preserve">
<data name="MatrixMedium" xml:space="preserve">
<value>中</value>
</data>
<data name="MatrixOff" xml:space="preserve">
<data name="MatrixOff" xml:space="preserve">
<value>關閉</value>
</data>
<data name="MatrixPicture" xml:space="preserve">
<data name="MatrixPicture" xml:space="preserve">
<value>圖片</value>
</data>
<data name="MaxRefreshTooltip" xml:space="preserve">
<data name="MaxRefreshTooltip" xml:space="preserve">
<value>更高的更新率和更低延遲</value>
</data>
<data name="MinRefreshTooltip" xml:space="preserve">
<data name="MinRefreshTooltip" xml:space="preserve">
<value>維持60Hz以節省電量</value>
</data>
<data name="Multizone" xml:space="preserve">
<data name="Multizone" xml:space="preserve">
<value>多區域</value>
</data>
<data name="MuteMic" xml:space="preserve">
<data name="MuteMic" xml:space="preserve">
<value>麥克風開關</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<data name="OpenGHelper" xml:space="preserve">
<value>開啟G-Helper視窗</value>
</data>
<data name="Optimized" xml:space="preserve">
<data name="Optimized" xml:space="preserve">
<value>自動模式</value>
</data>
<data name="OptimizedGPUTooltip" xml:space="preserve">
<data name="OptimizedGPUTooltip" xml:space="preserve">
<value>使用電池切換到節能模式,插入電源時切換到標準模式</value>
</data>
<data name="OptimizedUSBC" xml:space="preserve">
<data name="OptimizedUSBC" xml:space="preserve">
<value>自動模式下使用USB-C充電時持續關閉獨顯</value>
</data>
<data name="Other" xml:space="preserve">
<data name="Other" xml:space="preserve">
<value>其他</value>
</data>
<data name="Overdrive" xml:space="preserve">
<data name="Overdrive" xml:space="preserve">
<value>OD</value>
</data>
<data name="PerformanceMode" xml:space="preserve">
<data name="PerformanceMode" xml:space="preserve">
<value>性能模式:</value>
</data>
<data name="PictureGif" xml:space="preserve">
<data name="PictureGif" xml:space="preserve">
<value>圖片/動圖</value>
</data>
<data name="PlayPause" xml:space="preserve">
<data name="PlayPause" xml:space="preserve">
<value>播放/暫停</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<data name="PowerLimits" xml:space="preserve">
<value>功率限制 (PPT)</value>
</data>
<data name="PPTExperimental" xml:space="preserve">
<value>功率限制 (PPT) 是實驗性功能。 謹慎使用風險自負</value>
<data name="PPTExperimental" xml:space="preserve">
<value>功率限制是實驗性功能。謹慎使用,風險自負!</value>
</data>
<data name="PrintScreen" xml:space="preserve">
<data name="PrintScreen" xml:space="preserve">
<value>截圖</value>
</data>
<data name="Quit" xml:space="preserve">
<data name="Quit" xml:space="preserve">
<value>退出</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<data name="RestartGPU" xml:space="preserve">
<value>有其他程式正在使用獨顯導致無法切換至節能模式. 是否在裝置管理員中重啟獨顯? * 請自行評估風險</value>
</data>
<data name="RPM" xml:space="preserve">
<data name="RPM" xml:space="preserve">
<value>每分鐘轉數</value>
</data>
<data name="RunOnStartup" xml:space="preserve">
<data name="RunOnStartup" xml:space="preserve">
<value>開機自動開啟</value>
</data>
<data name="Shutdown" xml:space="preserve">
<data name="Shutdown" xml:space="preserve">
<value>關機時</value>
</data>
<data name="Silent" xml:space="preserve">
<data name="Silent" xml:space="preserve">
<value>安靜模式</value>
</data>
<data name="Sleep" xml:space="preserve">
<data name="Sleep" xml:space="preserve">
<value>睡眠時</value>
</data>
<data name="StandardGPUTooltip" xml:space="preserve">
<data name="StandardGPUTooltip" xml:space="preserve">
<value>標準模式會啟用獨顯</value>
</data>
<data name="StandardMode" xml:space="preserve">
<data name="StandardMode" xml:space="preserve">
<value>標準模式</value>
</data>
<data name="StartupError" xml:space="preserve">
<data name="StartupError" xml:space="preserve">
<value>啟動錯誤</value>
</data>
<data name="ToggleAura" xml:space="preserve">
<data name="ToggleAura" xml:space="preserve">
<value>切換Aura</value>
</data>
<data name="ToggleMiniled" xml:space="preserve">
<data name="ToggleFnLock" xml:space="preserve">
<value>免按Fn鍵使用Fn+F1~F12功能</value>
</data>
<data name="ToggleMiniled" xml:space="preserve">
<value>切換Miniled(若有支援)</value>
</data>
<data name="ToggleScreen" xml:space="preserve">
<data name="ToggleScreen" xml:space="preserve">
<value>切換螢幕</value>
</data>
<data name="Turbo" xml:space="preserve">
<data name="Turbo" xml:space="preserve">
<value>極速模式</value>
</data>
<data name="TurnedOff" xml:space="preserve">
<data name="TurnedOff" xml:space="preserve">
<value>已關閉</value>
</data>
<data name="TurnOffOnBattery" xml:space="preserve">
<data name="TurnOffOnBattery" xml:space="preserve">
<value>電池模式時關閉</value>
</data>
<data name="UltimateGPUTooltip" xml:space="preserve">
<data name="UltimateGPUTooltip" xml:space="preserve">
<value>開啟獨顯直連獲得最佳幀數</value>
</data>
<data name="UltimateMode" xml:space="preserve">
<data name="UltimateMode" xml:space="preserve">
<value>獨顯直連</value>
</data>
<data name="VersionLabel" xml:space="preserve">
<data name="Updates" xml:space="preserve">
<value>更新驅動</value>
</data>
<data name="VersionLabel" xml:space="preserve">
<value>版本</value>
</data>
<data name="VolumeDown" xml:space="preserve">
<data name="VolumeDown" xml:space="preserve">
<value>音量降低</value>
</data>
<data name="VolumeMute" xml:space="preserve">
<data name="VolumeMute" xml:space="preserve">
<value>靜音</value>
</data>
<data name="VolumeUp" xml:space="preserve">
<data name="VolumeUp" xml:space="preserve">
<value>音量增加</value>
</data>
<data name="WindowTop" xml:space="preserve">
<data name="WindowTop" xml:space="preserve">
<value>視窗置頂</value>
</data>
</root>

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1000 B

View File

@@ -135,7 +135,7 @@ namespace GHelper
panelMatrix.Controls.Add(panelMatrixTitle);
panelMatrix.Controls.Add(checkMatrix);
panelMatrix.Dock = DockStyle.Top;
panelMatrix.Location = new Point(10, 783);
panelMatrix.Location = new Point(10, 891);
panelMatrix.Margin = new Padding(0);
panelMatrix.Name = "panelMatrix";
panelMatrix.Padding = new Padding(20, 20, 20, 10);
@@ -264,7 +264,7 @@ namespace GHelper
panelBattery.Controls.Add(sliderBattery);
panelBattery.Controls.Add(panelBatteryTitle);
panelBattery.Dock = DockStyle.Top;
panelBattery.Location = new Point(10, 954);
panelBattery.Location = new Point(10, 1062);
panelBattery.Margin = new Padding(0);
panelBattery.Name = "panelBattery";
panelBattery.Padding = new Padding(20);
@@ -335,7 +335,7 @@ namespace GHelper
panelFooter.Controls.Add(buttonQuit);
panelFooter.Controls.Add(checkStartup);
panelFooter.Dock = DockStyle.Top;
panelFooter.Location = new Point(10, 1136);
panelFooter.Location = new Point(10, 1244);
panelFooter.Margin = new Padding(0);
panelFooter.Name = "panelFooter";
panelFooter.Padding = new Padding(20);
@@ -570,14 +570,14 @@ namespace GHelper
panelGPU.Margin = new Padding(0);
panelGPU.Name = "panelGPU";
panelGPU.Padding = new Padding(20, 20, 20, 0);
panelGPU.Size = new Size(810, 243);
panelGPU.Size = new Size(810, 351);
panelGPU.TabIndex = 37;
//
// labelTipGPU
//
labelTipGPU.Dock = DockStyle.Top;
labelTipGPU.ForeColor = SystemColors.GrayText;
labelTipGPU.Location = new Point(20, 207);
labelTipGPU.Location = new Point(20, 315);
labelTipGPU.Margin = new Padding(4, 0, 4, 0);
labelTipGPU.Name = "labelTipGPU";
labelTipGPU.Size = new Size(770, 36);
@@ -603,8 +603,8 @@ namespace GHelper
tableGPU.Name = "tableGPU";
tableGPU.RowCount = 1;
tableGPU.RowStyles.Add(new RowStyle(SizeType.Absolute, 128F));
tableGPU.RowStyles.Add(new RowStyle(SizeType.Absolute, 20F));
tableGPU.Size = new Size(770, 148);
tableGPU.RowStyles.Add(new RowStyle(SizeType.Absolute, 128F));
tableGPU.Size = new Size(770, 256);
tableGPU.TabIndex = 16;
//
// buttonEco
@@ -668,7 +668,7 @@ namespace GHelper
buttonXGM.Margin = new Padding(4);
buttonXGM.Name = "buttonXGM";
buttonXGM.Secondary = false;
buttonXGM.Size = new Size(184, 12);
buttonXGM.Size = new Size(184, 120);
buttonXGM.TabIndex = 2;
buttonXGM.Text = "XG Mobile";
buttonXGM.TextImageRelation = TextImageRelation.ImageAboveText;
@@ -771,7 +771,7 @@ namespace GHelper
panelScreen.Controls.Add(tableScreen);
panelScreen.Controls.Add(panelScreenTitle);
panelScreen.Dock = DockStyle.Top;
panelScreen.Location = new Point(10, 460);
panelScreen.Location = new Point(10, 568);
panelScreen.Margin = new Padding(0);
panelScreen.Name = "panelScreen";
panelScreen.Padding = new Padding(20, 20, 20, 10);
@@ -939,7 +939,7 @@ namespace GHelper
panelKeyboard.Controls.Add(tableLayoutKeyboard);
panelKeyboard.Controls.Add(panelKeyboardTitle);
panelKeyboard.Dock = DockStyle.Top;
panelKeyboard.Location = new Point(10, 645);
panelKeyboard.Location = new Point(10, 753);
panelKeyboard.Margin = new Padding(0);
panelKeyboard.Name = "panelKeyboard";
panelKeyboard.Padding = new Padding(20);
@@ -1113,7 +1113,7 @@ namespace GHelper
panelVersion.Controls.Add(labelVersion);
panelVersion.Controls.Add(labelModel);
panelVersion.Dock = DockStyle.Top;
panelVersion.Location = new Point(10, 1079);
panelVersion.Location = new Point(10, 1187);
panelVersion.Name = "panelVersion";
panelVersion.Size = new Size(810, 57);
panelVersion.TabIndex = 41;

View File

@@ -176,7 +176,7 @@ namespace GHelper
labelModel.Text = model + (ProcessHelper.IsUserAdministrator() ? "." : "");
TopMost = AppConfig.getConfig("topmost") == 1;
TopMost = AppConfig.isConfig("topmost");
SetContextMenu();
@@ -247,8 +247,9 @@ namespace GHelper
public void SetContextMenu()
{
contextMenuStrip.Items.Clear();
var mode = AppConfig.getConfig("performance_mode");
contextMenuStrip.Items.Clear();
Padding padding = new Padding(15, 5, 5, 5);
var title = new ToolStripMenuItem(Properties.Strings.PerformanceMode);
@@ -259,17 +260,19 @@ namespace GHelper
menuSilent = new ToolStripMenuItem(Properties.Strings.Silent);
menuSilent.Click += ButtonSilent_Click;
menuSilent.Margin = padding;
menuSilent.Checked = (mode == AsusACPI.PerformanceSilent);
contextMenuStrip.Items.Add(menuSilent);
menuBalanced = new ToolStripMenuItem(Properties.Strings.Balanced);
menuBalanced.Click += ButtonBalanced_Click;
menuBalanced.Margin = padding;
menuBalanced.Checked = (mode == AsusACPI.PerformanceBalanced);
contextMenuStrip.Items.Add(menuBalanced);
menuTurbo = new ToolStripMenuItem(Properties.Strings.Turbo);
menuTurbo.Click += ButtonTurbo_Click;
menuTurbo.Checked = true;
menuTurbo.Margin = padding;
menuTurbo.Checked = (mode == AsusACPI.PerformanceTurbo);
contextMenuStrip.Items.Add(menuTurbo);
contextMenuStrip.Items.Add("-");
@@ -351,9 +354,11 @@ namespace GHelper
else
{
Program.acpi.DeviceSet(AsusACPI.GPUXG, 1, "GPU XGM");
AsusUSB.ApplyXGMLight(AppConfig.isConfig("xmg_light"));
await Task.Delay(TimeSpan.FromSeconds(15));
if (AppConfig.getConfigPerf("auto_apply") == 1)
if (AppConfig.isConfigPerf("auto_apply"))
AsusUSB.SetXGMFan(AppConfig.getFanConfig(AsusFan.XGM));
}
@@ -1139,7 +1144,7 @@ namespace GHelper
{
customFans = false;
if (AppConfig.getConfigPerf("auto_apply") == 1 || force)
if (AppConfig.isConfigPerf("auto_apply") || force)
{
bool xgmFan = false;
@@ -1162,7 +1167,7 @@ namespace GHelper
{
int mode = AppConfig.getConfig("performance_mode");
Logger.WriteLine("ASUS BIOS rejected fan curve, resetting mode to " + mode);
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, mode, "PerformanceMode");
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, mode, "Reset Mode");
LabelFansResult("ASUS BIOS rejected fan curve");
}
else
@@ -1171,8 +1176,8 @@ namespace GHelper
customFans = true;
}
// fix for misbehaving bios on intell based TUF 2022
if ((AppConfig.ContainsModel("FX507") || AppConfig.ContainsModel("FX517") || xgmFan) && AppConfig.getConfigPerf("auto_apply_power") != 1)
// force set PPTs for missbehaving bios on FX507/517 series
if ((AppConfig.ContainsModel("FX507") || AppConfig.ContainsModel("FX517") || xgmFan) && !AppConfig.isConfigPerf("auto_apply_power"))
{
Task.Run(async () =>
{
@@ -1188,22 +1193,42 @@ namespace GHelper
}
private static bool isManualModeRequired()
{
if (!AppConfig.isConfigPerf("auto_apply_power"))
return false;
return
AppConfig.isConfig("manual_mode") ||
AppConfig.ContainsModel("GU604") ||
AppConfig.ContainsModel("FX517") ||
AppConfig.ContainsModel("G733");
}
public void AutoPower(int delay = 0)
{
// fix for misbehaving bios PPTs on G513
if (AppConfig.ContainsModel("G513") && AppConfig.getConfigPerf("auto_apply") != 1)
{
AutoFans(true);
delay = 500;
}
customPower = 0;
bool applyPower = AppConfig.getConfigPerf("auto_apply_power") == 1;
bool applyGPU = true;
bool applyPower = AppConfig.isConfigPerf("auto_apply_power");
bool applyFans = AppConfig.isConfigPerf("auto_apply");
//bool applyGPU = true;
//if (applyPower) Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AsusACPI.PerformanceManual, "CustomMode");
if (applyPower)
{
// force fan curve for misbehaving bios PPTs on G513
if (AppConfig.ContainsModel("G513") && !applyFans)
{
delay = 500;
AutoFans(true);
}
// Fix for models that don't support PPT settings in all modes, setting a "manual" mode for them
if (isManualModeRequired() && !applyFans)
{
AutoFans(true);
}
}
if (delay > 0)
{
@@ -1229,46 +1254,54 @@ namespace GHelper
public void SetPerformanceMode(int PerformanceMode = -1, bool notify = false)
{
if (PerformanceMode < 0)
PerformanceMode = AppConfig.getConfig("performance_mode");
int oldMode = AppConfig.getConfig("performance_mode");
if (PerformanceMode < 0) PerformanceMode = oldMode;
buttonSilent.Activated = false;
buttonBalanced.Activated = false;
buttonTurbo.Activated = false;
menuSilent.Checked = false;
menuBalanced.Checked = false;
menuTurbo.Checked = false;
switch (PerformanceMode)
{
case AsusACPI.PerformanceSilent:
buttonSilent.Activated = true;
menuSilent.Checked = true;
perfName = Properties.Strings.Silent;
break;
case AsusACPI.PerformanceTurbo:
buttonTurbo.Activated = true;
menuTurbo.Checked = true;
perfName = Properties.Strings.Turbo;
break;
default:
buttonBalanced.Activated = true;
PerformanceMode = AsusACPI.PerformanceBalanced;
menuBalanced.Checked = true;
perfName = Properties.Strings.Balanced;
PerformanceMode = AsusACPI.PerformanceBalanced;
break;
}
menuSilent.Checked = buttonSilent.Activated;
menuBalanced.Checked = buttonBalanced.Activated;
menuTurbo.Checked = buttonTurbo.Activated;
var powerStatus = SystemInformation.PowerStatus.PowerLineStatus;
int oldMode = AppConfig.getConfig("performance_mode");
AppConfig.setConfig("performance_" + (int)SystemInformation.PowerStatus.PowerLineStatus, PerformanceMode);
AppConfig.setConfig("performance_" + (int)powerStatus, PerformanceMode);
AppConfig.setConfig("performance_mode", PerformanceMode);
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, PerformanceMode, "PerformanceMode");
if (isManualModeRequired())
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AsusACPI.PerformanceManual, "Manual Mode");
else
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, PerformanceMode, "Mode");
if (AppConfig.isConfig("xgm_fan") && Program.acpi.IsXGConnected()) AsusUSB.ResetXGM();
if (notify && (oldMode != PerformanceMode))
if (notify)
{
try
{
toast.RunToast(perfName);
toast.RunToast(perfName, powerStatus == PowerLineStatus.Online ? ToastIcon.Charger : ToastIcon.Battery);
}
catch
{
@@ -1329,13 +1362,13 @@ namespace GHelper
}
public void AutoPerformance()
public void AutoPerformance(bool powerChanged = false)
{
var Plugged = SystemInformation.PowerStatus.PowerLineStatus;
int mode = AppConfig.getConfig("performance_" + (int)Plugged);
if (mode != -1)
SetPerformanceMode(mode, true);
SetPerformanceMode(mode, powerChanged);
else
SetPerformanceMode(AppConfig.getConfig("performance_mode"));
}
@@ -1701,10 +1734,13 @@ namespace GHelper
break;
}
menuEco.Checked = buttonEco.Activated;
menuStandard.Checked = buttonStandard.Activated;
menuUltimate.Checked = buttonUltimate.Activated;
menuOptimized.Checked = buttonOptimized.Activated;
if (isGpuSection)
{
menuEco.Checked = buttonEco.Activated;
menuStandard.Checked = buttonStandard.Activated;
menuUltimate.Checked = buttonUltimate.Activated;
menuOptimized.Checked = buttonOptimized.Activated;
}
}

View File

@@ -106,7 +106,7 @@ namespace WinFormsSliderBar
private void RecalculateParameters()
{
_radius = 0.4F * ClientSize.Height;
_barSize = new SizeF(ClientSize.Width - 4 * _radius, ClientSize.Height * 0.15F);
_barSize = new SizeF(ClientSize.Width - 2 * _radius, ClientSize.Height * 0.15F);
_barPos = new PointF(_radius, (ClientSize.Height - _barSize.Height) / 2);
_thumbPos = new PointF(
_barSize.Width / (Max - Min) * (Value - Min) + _barPos.X,

View File

@@ -52,7 +52,9 @@ namespace GHelper
Touchpad,
Microphone,
MicrophoneMute,
FnLock
FnLock,
Battery,
Charger
}
public class ToastForm : OSDNativeForm
@@ -107,6 +109,12 @@ namespace GHelper
case ToastIcon.FnLock:
icon = Properties.Resources.icons8_function;
break;
case ToastIcon.Battery:
icon = Properties.Resources.icons8_charged_battery_96;
break;
case ToastIcon.Charger:
icon = Properties.Resources.icons8_electrical_96;
break;
}

View File

@@ -1,10 +1,22 @@
using CustomControls;
using HidSharp;
using System.Diagnostics;
using System.Management;
using System.Net;
using System.Text.Json;
namespace GHelper
{
struct DriverDownload
{
public string categoryName;
public string title;
public string version;
public string downloadUrl;
public JsonElement hardwares;
}
public partial class Updates : RForm
{
//static int rowCount = 0;
@@ -30,7 +42,7 @@ namespace GHelper
Task.Run(async () =>
{
DriversAsync($"https://rog.asus.com/support/webapi/product/GetPDDrivers?website=global&model={model}&osid=52", 0, tableDrivers);
DriversAsync($"https://rog.asus.com/support/webapi/product/GetPDDrivers?website=global&model={model}&cpu={model}&osid=52", 0, tableDrivers);
});
Shown += Updates_Shown;
@@ -44,34 +56,41 @@ namespace GHelper
}
private Dictionary<string, string> GetDeviceVersions()
{
ManagementObjectSearcher objSearcher = new ManagementObjectSearcher("Select * from Win32_PnPSignedDriver");
ManagementObjectCollection objCollection = objSearcher.Get();
Dictionary<string, string> list = new();
foreach (ManagementObject obj in objCollection)
using (ManagementObjectSearcher objSearcher = new ManagementObjectSearcher("Select * from Win32_PnPSignedDriver"))
{
if (obj["DeviceID"] is not null && obj["DriverVersion"] is not null)
list[obj["DeviceID"].ToString()] = obj["DriverVersion"].ToString();
}
using (ManagementObjectCollection objCollection = objSearcher.Get())
{
Dictionary<string, string> list = new();
return list;
foreach (ManagementObject obj in objCollection)
{
if (obj["DeviceID"] is not null && obj["DriverVersion"] is not null)
list[obj["DeviceID"].ToString()] = obj["DriverVersion"].ToString();
}
return list;
}
}
}
private string GetBiosVersion()
{
ManagementObjectSearcher objSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_BIOS");
ManagementObjectCollection objCollection = objSearcher.Get();
foreach (ManagementObject obj in objCollection)
if (obj["SMBIOSBIOSVersion"] is not null)
using (ManagementObjectSearcher objSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_BIOS"))
{
using (ManagementObjectCollection objCollection = objSearcher.Get())
{
var bios = obj["SMBIOSBIOSVersion"].ToString();
int trim = bios.LastIndexOf(".");
if (trim > 0) return bios.Substring(trim + 1);
else return bios;
}
foreach (ManagementObject obj in objCollection)
if (obj["SMBIOSBIOSVersion"] is not null)
{
var bios = obj["SMBIOSBIOSVersion"].ToString();
int trim = bios.LastIndexOf(".");
if (trim > 0) return bios.Substring(trim + 1);
else return bios;
}
return "";
return "";
}
}
}
public async void DriversAsync(string url, int type, TableLayoutPanel table)
@@ -79,23 +98,20 @@ namespace GHelper
try
{
Dictionary<string, string> devices = new();
string biosVersion = "";
if (type == 0) devices = GetDeviceVersions();
else biosVersion = GetBiosVersion();
//Debug.WriteLine(biosVersion);
using (var httpClient = new HttpClient())
using (var httpClient = new HttpClient(new HttpClientHandler
{
AutomaticDecompression = DecompressionMethods.All
}))
{
httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("gzip, deflate, br");
httpClient.DefaultRequestHeaders.Add("User-Agent", "C# App");
var json = await httpClient.GetStringAsync(url);
var data = JsonSerializer.Deserialize<JsonElement>(json);
var groups = data.GetProperty("Result").GetProperty("Obj");
List<string> skipList = new() { "Armoury Crate & Aura Creator Installer", "MyASUS", "ASUS Smart Display Control", "Aura Wallpaper" };
List<string> skipList = new() { "Armoury Crate & Aura Creator Installer", "MyASUS", "ASUS Smart Display Control", "Aura Wallpaper", "Virtual Pet","ROG Font V1.5" };
List<DriverDownload> drivers = new();
for (int i = 0; i < groups.GetArrayLength(); i++)
{
@@ -109,62 +125,43 @@ namespace GHelper
var file = files[j];
var title = file.GetProperty("Title").ToString();
var version = file.GetProperty("Version").ToString().Replace("V", "");
var downloadUrl = file.GetProperty("DownloadUrl").GetProperty("Global").ToString();
//Debug.WriteLine(" - " + title + " " + version + " " + downloadUrl);
if (oldTitle != title && !skipList.Contains(title))
{
JsonElement hardwares = file.GetProperty("HardwareInfoList");
bool newer = false;
if (type == 0 && hardwares.ToString().Length > 0)
for (int k = 0; k < hardwares.GetArrayLength(); k++)
{
var deviceID = hardwares[k].GetProperty("hardwareid").ToString();
var localVersion = devices.Where(p => p.Key.Contains(deviceID)).Select(p => p.Value).FirstOrDefault();
if (localVersion is not null)
{
newer = (new Version(version).CompareTo(new Version(localVersion)) > 0);
break;
}
}
if (type == 1)
{
newer = Int32.Parse(version) > Int32.Parse(biosVersion);
}
var driver = new DriverDownload();
driver.categoryName = categoryName;
driver.title = title;
driver.version = file.GetProperty("Version").ToString().Replace("V", "");
driver.downloadUrl = file.GetProperty("DownloadUrl").GetProperty("Global").ToString();
driver.hardwares = file.GetProperty("HardwareInfoList");
drivers.Add(driver);
BeginInvoke(delegate
{
string versionText = version.Replace("latest version at the ", "");
string versionText = driver.version.Replace("latest version at the ", "");
Label versionLabel = new Label { Text = versionText, Anchor = AnchorStyles.Left, Dock = DockStyle.Fill, Height = 50 };
versionLabel.Cursor = Cursors.Hand;
versionLabel.Font = new Font(versionLabel.Font, newer ? FontStyle.Underline | FontStyle.Bold : FontStyle.Underline);
versionLabel.ForeColor = newer ? colorTurbo : colorEco;
versionLabel.Font = new Font(versionLabel.Font, FontStyle.Underline);
versionLabel.ForeColor = colorEco;
versionLabel.Padding = new Padding(5, 5, 5, 5);
versionLabel.Click += delegate
{
Process.Start(new ProcessStartInfo(downloadUrl) { UseShellExecute = true });
Process.Start(new ProcessStartInfo(driver.downloadUrl) { UseShellExecute = true });
};
table.RowStyles.Add(new RowStyle(SizeType.AutoSize));
table.Controls.Add(new Label { Text = categoryName, Anchor = AnchorStyles.Left, Dock = DockStyle.Fill, Padding = new Padding(5, 5, 5, 5) }, 0, table.RowCount);
table.Controls.Add(new Label { Text = title, Anchor = AnchorStyles.Left, Dock = DockStyle.Fill, Padding = new Padding(5, 5, 5, 5) }, 1, table.RowCount);
table.Controls.Add(new Label { Text = driver.categoryName, Anchor = AnchorStyles.Left, Dock = DockStyle.Fill, Padding = new Padding(5, 5, 5, 5) }, 0, table.RowCount);
table.Controls.Add(new Label { Text = driver.title, Anchor = AnchorStyles.Left, Dock = DockStyle.Fill, Padding = new Padding(5, 5, 5, 5) }, 1, table.RowCount);
table.Controls.Add(versionLabel, 2, table.RowCount);
table.RowCount++;
});
}
oldTitle = title;
}
}
BeginInvoke(delegate
{
table.Visible = true;
@@ -172,11 +169,54 @@ namespace GHelper
PerformLayout();
});
Dictionary<string, string> devices = new();
string biosVersion = "0";
if (type == 0) devices = GetDeviceVersions();
else biosVersion = GetBiosVersion();
//Debug.WriteLine(biosVersion);
int count = 0;
foreach (var driver in drivers)
{
int newer = -2;
if (type == 0 && driver.hardwares.ToString().Length > 0)
for (int k = 0; k < driver.hardwares.GetArrayLength(); k++)
{
var deviceID = driver.hardwares[k].GetProperty("hardwareid").ToString();
var localVersion = devices.Where(p => p.Key.Contains(deviceID)).Select(p => p.Value).FirstOrDefault();
if (localVersion is not null)
{
newer = new Version(driver.version).CompareTo(new Version(localVersion));
break;
}
}
if (type == 1)
newer = Int32.Parse(driver.version) > Int32.Parse(biosVersion) ? 1 : -1;
if (newer > 0)
{
var label = table.GetControlFromPosition(2, count) as Label;
if (label != null)
{
BeginInvoke(delegate
{
label.Font = new Font(label.Font, FontStyle.Underline | FontStyle.Bold);
label.ForeColor = colorTurbo;
});
}
}
count++;
}
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.ToString());
Logger.WriteLine(ex.ToString());
}