mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Compare commits
37 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
306dfe2bd7 | ||
|
|
ca7dfff357 | ||
|
|
59288b9422 | ||
|
|
46ff8deb44 | ||
|
|
e6e8877531 | ||
|
|
b13306b989 | ||
|
|
838dc039ac | ||
|
|
0702f95e0c | ||
|
|
f42fcf2f73 | ||
|
|
6a7e1ddaa3 | ||
|
|
57ffcb8c7f | ||
|
|
5425bd0128 | ||
|
|
328cd8f9f1 | ||
|
|
38739ca8f6 | ||
|
|
a3e235e886 | ||
|
|
678f4b0eb7 | ||
|
|
4bbfbd0382 | ||
|
|
4c8291c74b | ||
|
|
e9060ad8c0 | ||
|
|
f26585e73c | ||
|
|
9f7da4c20a | ||
|
|
eff45c1485 | ||
|
|
be6e5e8f23 | ||
|
|
17083eef21 | ||
|
|
d5b098335b | ||
|
|
acb2efdd00 | ||
|
|
92fa210898 | ||
|
|
6dd4e07efe | ||
|
|
ae6972db76 | ||
|
|
b3f7b1027f | ||
|
|
8929daa604 | ||
|
|
eb522214f0 | ||
|
|
1222377c33 | ||
|
|
933f07d666 | ||
|
|
8f95f6a1bb | ||
|
|
f2c32b2e9a | ||
|
|
ddb591b79a |
@@ -61,8 +61,25 @@ public static class AppConfig
|
||||
|
||||
GetModel();
|
||||
return (_model is not null && _model.ToLower().Contains(contains.ToLower()));
|
||||
|
||||
}
|
||||
|
||||
public static string GetModelShort()
|
||||
{
|
||||
GetModel();
|
||||
if (_model is not null)
|
||||
{
|
||||
int trim = _model.LastIndexOf("_");
|
||||
if (trim > 0) return _model.Substring(trim+1);
|
||||
|
||||
trim = _model.LastIndexOf(" ");
|
||||
if (trim > 0) return _model.Substring(trim + 1);
|
||||
|
||||
return _model;
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
private static void initConfig()
|
||||
{
|
||||
config = new Dictionary<string, object>();
|
||||
@@ -210,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");
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using GHelper;
|
||||
using System.Management;
|
||||
using System.Management;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
public enum AsusFan
|
||||
@@ -93,6 +92,7 @@ public class AsusACPI
|
||||
public const int PerformanceBalanced = 0;
|
||||
public const int PerformanceTurbo = 1;
|
||||
public const int PerformanceSilent = 2;
|
||||
public const int PerformanceManual = 4;
|
||||
|
||||
public const int GPUModeEco = 0;
|
||||
public const int GPUModeStandard = 1;
|
||||
@@ -420,6 +420,26 @@ public class AsusACPI
|
||||
return DeviceGet(PPT_CPUB0) >= 0 && DeviceGet(PPT_GPUC0) < 0;
|
||||
}
|
||||
|
||||
/*
|
||||
public void ScanRange()
|
||||
{
|
||||
int value;
|
||||
string appPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\GHelper";
|
||||
string logFile = appPath + "\\scan.txt";
|
||||
for (uint i = 0x00000000; i <= 0x00160000; i++)
|
||||
{
|
||||
value = DeviceGet(i);
|
||||
if (value >= 0)
|
||||
using (StreamWriter w = File.AppendText(logFile))
|
||||
{
|
||||
w.WriteLine(i.ToString("X8") + ": " + value.ToString("X4") + " (" + value + ")");
|
||||
w.Close();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
public void TUFKeyboardBrightness(int brightness)
|
||||
{
|
||||
int param = 0x80 | (brightness & 0x7F);
|
||||
|
||||
@@ -124,7 +124,8 @@ namespace GHelper
|
||||
_modes.Remove(3);
|
||||
}
|
||||
|
||||
if (AppConfig.ContainsModel("G513")) {
|
||||
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();
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
});
|
||||
|
||||
|
||||
513
app/Extra.Designer.cs
generated
513
app/Extra.Designer.cs
generated
@@ -86,12 +86,16 @@ namespace GHelper
|
||||
checkSleepLid = new CheckBox();
|
||||
checkShutdownLid = new CheckBox();
|
||||
groupOther = new GroupBox();
|
||||
checkFnLock = new CheckBox();
|
||||
checkGpuApps = new CheckBox();
|
||||
checkAutoApplyWindowsPowerMode = new CheckBox();
|
||||
checkUSBC = new CheckBox();
|
||||
checkNoOverdrive = new CheckBox();
|
||||
checkTopmost = new CheckBox();
|
||||
checkNoOverdrive = new CheckBox();
|
||||
checkUSBC = new CheckBox();
|
||||
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();
|
||||
@@ -103,17 +107,20 @@ namespace GHelper
|
||||
panelXMG.SuspendLayout();
|
||||
tableBacklight.SuspendLayout();
|
||||
groupOther.SuspendLayout();
|
||||
panelServices.SuspendLayout();
|
||||
SuspendLayout();
|
||||
//
|
||||
// groupBindings
|
||||
//
|
||||
groupBindings.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
groupBindings.AutoSize = true;
|
||||
groupBindings.Controls.Add(tableKeys);
|
||||
groupBindings.Controls.Add(pictureHelp);
|
||||
groupBindings.Dock = DockStyle.Top;
|
||||
groupBindings.Location = new Point(10, 10);
|
||||
groupBindings.Location = new Point(9, 11);
|
||||
groupBindings.Margin = new Padding(4, 2, 4, 2);
|
||||
groupBindings.Name = "groupBindings";
|
||||
groupBindings.Size = new Size(954, 360);
|
||||
groupBindings.Padding = new Padding(4, 2, 50, 2);
|
||||
groupBindings.Size = new Size(966, 343);
|
||||
groupBindings.TabIndex = 0;
|
||||
groupBindings.TabStop = false;
|
||||
groupBindings.Text = "Key Bindings";
|
||||
@@ -142,23 +149,26 @@ namespace GHelper
|
||||
tableKeys.Controls.Add(textFNF4, 2, 4);
|
||||
tableKeys.Controls.Add(comboFNC, 1, 5);
|
||||
tableKeys.Controls.Add(textFNC, 2, 5);
|
||||
tableKeys.Location = new Point(13, 38);
|
||||
tableKeys.Dock = DockStyle.Top;
|
||||
tableKeys.Location = new Point(4, 34);
|
||||
tableKeys.Margin = new Padding(4, 2, 4, 2);
|
||||
tableKeys.Name = "tableKeys";
|
||||
tableKeys.Padding = new Padding(10);
|
||||
tableKeys.Padding = new Padding(9, 11, 0, 11);
|
||||
tableKeys.RowCount = 6;
|
||||
tableKeys.RowStyles.Add(new RowStyle(SizeType.Absolute, 50F));
|
||||
tableKeys.RowStyles.Add(new RowStyle(SizeType.Absolute, 50F));
|
||||
tableKeys.RowStyles.Add(new RowStyle(SizeType.Absolute, 50F));
|
||||
tableKeys.RowStyles.Add(new RowStyle(SizeType.Absolute, 50F));
|
||||
tableKeys.RowStyles.Add(new RowStyle(SizeType.Absolute, 48F));
|
||||
tableKeys.RowStyles.Add(new RowStyle(SizeType.Absolute, 22F));
|
||||
tableKeys.Size = new Size(900, 308);
|
||||
tableKeys.RowStyles.Add(new RowStyle(SizeType.Absolute, 49F));
|
||||
tableKeys.RowStyles.Add(new RowStyle(SizeType.Absolute, 49F));
|
||||
tableKeys.RowStyles.Add(new RowStyle(SizeType.Absolute, 49F));
|
||||
tableKeys.RowStyles.Add(new RowStyle(SizeType.Absolute, 49F));
|
||||
tableKeys.RowStyles.Add(new RowStyle(SizeType.Absolute, 47F));
|
||||
tableKeys.RowStyles.Add(new RowStyle(SizeType.Absolute, 21F));
|
||||
tableKeys.Size = new Size(912, 307);
|
||||
tableKeys.TabIndex = 10;
|
||||
//
|
||||
// labelFNC
|
||||
//
|
||||
labelFNC.AutoSize = true;
|
||||
labelFNC.Location = new Point(13, 258);
|
||||
labelFNC.Location = new Point(13, 254);
|
||||
labelFNC.Margin = new Padding(4, 0, 4, 0);
|
||||
labelFNC.Name = "labelFNC";
|
||||
labelFNC.Size = new Size(80, 32);
|
||||
labelFNC.TabIndex = 15;
|
||||
@@ -166,35 +176,42 @@ namespace GHelper
|
||||
//
|
||||
// textM2
|
||||
//
|
||||
textM2.Location = new Point(541, 63);
|
||||
textM2.Dock = DockStyle.Top;
|
||||
textM2.Location = new Point(554, 62);
|
||||
textM2.Margin = new Padding(4, 2, 4, 2);
|
||||
textM2.Name = "textM2";
|
||||
textM2.PlaceholderText = "action";
|
||||
textM2.Size = new Size(346, 39);
|
||||
textM2.Size = new Size(354, 39);
|
||||
textM2.TabIndex = 14;
|
||||
//
|
||||
// textM1
|
||||
//
|
||||
textM1.Location = new Point(541, 13);
|
||||
textM1.Dock = DockStyle.Top;
|
||||
textM1.Location = new Point(554, 13);
|
||||
textM1.Margin = new Padding(4, 2, 4, 2);
|
||||
textM1.Name = "textM1";
|
||||
textM1.PlaceholderText = "action";
|
||||
textM1.Size = new Size(346, 39);
|
||||
textM1.Size = new Size(354, 39);
|
||||
textM1.TabIndex = 13;
|
||||
//
|
||||
// comboM1
|
||||
//
|
||||
comboM1.BorderColor = Color.White;
|
||||
comboM1.ButtonColor = Color.FromArgb(255, 255, 255);
|
||||
comboM1.Dock = DockStyle.Top;
|
||||
comboM1.FormattingEnabled = true;
|
||||
comboM1.Items.AddRange(new object[] { Strings.Default, Strings.VolumeMute, Strings.PlayPause, Strings.PrintScreen, Strings.ToggleAura, Strings.Custom });
|
||||
comboM1.Location = new Point(189, 13);
|
||||
comboM1.Location = new Point(193, 13);
|
||||
comboM1.Margin = new Padding(4, 2, 4, 2);
|
||||
comboM1.Name = "comboM1";
|
||||
comboM1.Size = new Size(312, 40);
|
||||
comboM1.Size = new Size(353, 40);
|
||||
comboM1.TabIndex = 11;
|
||||
//
|
||||
// labelM1
|
||||
//
|
||||
labelM1.AutoSize = true;
|
||||
labelM1.Location = new Point(13, 10);
|
||||
labelM1.Location = new Point(13, 11);
|
||||
labelM1.Margin = new Padding(4, 0, 4, 0);
|
||||
labelM1.Name = "labelM1";
|
||||
labelM1.Size = new Size(54, 32);
|
||||
labelM1.TabIndex = 9;
|
||||
@@ -204,44 +221,53 @@ namespace GHelper
|
||||
//
|
||||
comboM4.BorderColor = Color.White;
|
||||
comboM4.ButtonColor = Color.FromArgb(255, 255, 255);
|
||||
comboM4.Dock = DockStyle.Top;
|
||||
comboM4.FormattingEnabled = true;
|
||||
comboM4.Items.AddRange(new object[] { Strings.PerformanceMode, Strings.OpenGHelper, Strings.Custom });
|
||||
comboM4.Location = new Point(189, 163);
|
||||
comboM4.Location = new Point(193, 160);
|
||||
comboM4.Margin = new Padding(4, 2, 4, 2);
|
||||
comboM4.Name = "comboM4";
|
||||
comboM4.Size = new Size(312, 40);
|
||||
comboM4.Size = new Size(353, 40);
|
||||
comboM4.TabIndex = 3;
|
||||
//
|
||||
// comboM3
|
||||
//
|
||||
comboM3.BorderColor = Color.White;
|
||||
comboM3.ButtonColor = Color.FromArgb(255, 255, 255);
|
||||
comboM3.Dock = DockStyle.Top;
|
||||
comboM3.FormattingEnabled = true;
|
||||
comboM3.Items.AddRange(new object[] { Strings.Default, Strings.VolumeMute, Strings.PlayPause, Strings.PrintScreen, Strings.ToggleAura, Strings.Custom });
|
||||
comboM3.Location = new Point(189, 113);
|
||||
comboM3.Location = new Point(193, 111);
|
||||
comboM3.Margin = new Padding(4, 2, 4, 2);
|
||||
comboM3.Name = "comboM3";
|
||||
comboM3.Size = new Size(312, 40);
|
||||
comboM3.Size = new Size(353, 40);
|
||||
comboM3.TabIndex = 1;
|
||||
//
|
||||
// textM4
|
||||
//
|
||||
textM4.Location = new Point(541, 163);
|
||||
textM4.Dock = DockStyle.Top;
|
||||
textM4.Location = new Point(554, 160);
|
||||
textM4.Margin = new Padding(4, 2, 4, 2);
|
||||
textM4.Name = "textM4";
|
||||
textM4.PlaceholderText = "action";
|
||||
textM4.Size = new Size(346, 39);
|
||||
textM4.Size = new Size(354, 39);
|
||||
textM4.TabIndex = 5;
|
||||
//
|
||||
// textM3
|
||||
//
|
||||
textM3.Location = new Point(541, 113);
|
||||
textM3.Dock = DockStyle.Top;
|
||||
textM3.Location = new Point(554, 111);
|
||||
textM3.Margin = new Padding(4, 2, 4, 2);
|
||||
textM3.Name = "textM3";
|
||||
textM3.PlaceholderText = "action";
|
||||
textM3.Size = new Size(346, 39);
|
||||
textM3.Size = new Size(354, 39);
|
||||
textM3.TabIndex = 4;
|
||||
//
|
||||
// labelM4
|
||||
//
|
||||
labelM4.AutoSize = true;
|
||||
labelM4.Location = new Point(13, 160);
|
||||
labelM4.Location = new Point(13, 158);
|
||||
labelM4.Margin = new Padding(4, 0, 4, 0);
|
||||
labelM4.Name = "labelM4";
|
||||
labelM4.Size = new Size(54, 32);
|
||||
labelM4.TabIndex = 2;
|
||||
@@ -250,7 +276,8 @@ namespace GHelper
|
||||
// labelM3
|
||||
//
|
||||
labelM3.AutoSize = true;
|
||||
labelM3.Location = new Point(13, 110);
|
||||
labelM3.Location = new Point(13, 109);
|
||||
labelM3.Margin = new Padding(4, 0, 4, 0);
|
||||
labelM3.Name = "labelM3";
|
||||
labelM3.Size = new Size(54, 32);
|
||||
labelM3.TabIndex = 0;
|
||||
@@ -260,6 +287,7 @@ namespace GHelper
|
||||
//
|
||||
labelM2.AutoSize = true;
|
||||
labelM2.Location = new Point(13, 60);
|
||||
labelM2.Margin = new Padding(4, 0, 4, 0);
|
||||
labelM2.Name = "labelM2";
|
||||
labelM2.Size = new Size(54, 32);
|
||||
labelM2.TabIndex = 10;
|
||||
@@ -269,17 +297,20 @@ namespace GHelper
|
||||
//
|
||||
comboM2.BorderColor = Color.White;
|
||||
comboM2.ButtonColor = Color.FromArgb(255, 255, 255);
|
||||
comboM2.Dock = DockStyle.Top;
|
||||
comboM2.FormattingEnabled = true;
|
||||
comboM2.Items.AddRange(new object[] { Strings.Default, Strings.VolumeMute, Strings.PlayPause, Strings.PrintScreen, Strings.ToggleAura, Strings.Custom });
|
||||
comboM2.Location = new Point(189, 63);
|
||||
comboM2.Location = new Point(193, 62);
|
||||
comboM2.Margin = new Padding(4, 2, 4, 2);
|
||||
comboM2.Name = "comboM2";
|
||||
comboM2.Size = new Size(312, 40);
|
||||
comboM2.Size = new Size(353, 40);
|
||||
comboM2.TabIndex = 12;
|
||||
//
|
||||
// labelFNF4
|
||||
//
|
||||
labelFNF4.AutoSize = true;
|
||||
labelFNF4.Location = new Point(13, 210);
|
||||
labelFNF4.Location = new Point(13, 207);
|
||||
labelFNF4.Margin = new Padding(4, 0, 4, 0);
|
||||
labelFNF4.Name = "labelFNF4";
|
||||
labelFNF4.Size = new Size(90, 32);
|
||||
labelFNF4.TabIndex = 6;
|
||||
@@ -289,36 +320,44 @@ namespace GHelper
|
||||
//
|
||||
comboFNF4.BorderColor = Color.White;
|
||||
comboFNF4.ButtonColor = Color.FromArgb(255, 255, 255);
|
||||
comboFNF4.Dock = DockStyle.Top;
|
||||
comboFNF4.FormattingEnabled = true;
|
||||
comboFNF4.Location = new Point(189, 213);
|
||||
comboFNF4.Location = new Point(193, 209);
|
||||
comboFNF4.Margin = new Padding(4, 2, 4, 2);
|
||||
comboFNF4.Name = "comboFNF4";
|
||||
comboFNF4.Size = new Size(312, 40);
|
||||
comboFNF4.Size = new Size(353, 40);
|
||||
comboFNF4.TabIndex = 7;
|
||||
//
|
||||
// textFNF4
|
||||
//
|
||||
textFNF4.Location = new Point(541, 213);
|
||||
textFNF4.Dock = DockStyle.Top;
|
||||
textFNF4.Location = new Point(554, 209);
|
||||
textFNF4.Margin = new Padding(4, 2, 4, 2);
|
||||
textFNF4.Name = "textFNF4";
|
||||
textFNF4.PlaceholderText = "action";
|
||||
textFNF4.Size = new Size(346, 39);
|
||||
textFNF4.Size = new Size(354, 39);
|
||||
textFNF4.TabIndex = 8;
|
||||
//
|
||||
// comboFNC
|
||||
//
|
||||
comboFNC.BorderColor = Color.White;
|
||||
comboFNC.ButtonColor = Color.FromArgb(255, 255, 255);
|
||||
comboFNC.Dock = DockStyle.Top;
|
||||
comboFNC.FormattingEnabled = true;
|
||||
comboFNC.Location = new Point(189, 261);
|
||||
comboFNC.Location = new Point(193, 256);
|
||||
comboFNC.Margin = new Padding(4, 2, 4, 2);
|
||||
comboFNC.Name = "comboFNC";
|
||||
comboFNC.Size = new Size(312, 40);
|
||||
comboFNC.Size = new Size(353, 40);
|
||||
comboFNC.TabIndex = 16;
|
||||
//
|
||||
// textFNC
|
||||
//
|
||||
textFNC.Location = new Point(541, 261);
|
||||
textFNC.Dock = DockStyle.Top;
|
||||
textFNC.Location = new Point(554, 256);
|
||||
textFNC.Margin = new Padding(4, 2, 4, 2);
|
||||
textFNC.Name = "textFNC";
|
||||
textFNC.PlaceholderText = "action";
|
||||
textFNC.Size = new Size(346, 39);
|
||||
textFNC.Size = new Size(354, 39);
|
||||
textFNC.TabIndex = 17;
|
||||
//
|
||||
// pictureHelp
|
||||
@@ -326,7 +365,8 @@ namespace GHelper
|
||||
pictureHelp.BackgroundImage = Resources.icons8_help_64;
|
||||
pictureHelp.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
pictureHelp.Cursor = Cursors.Hand;
|
||||
pictureHelp.Location = new Point(912, 51);
|
||||
pictureHelp.Location = new Point(921, 51);
|
||||
pictureHelp.Margin = new Padding(4, 2, 4, 2);
|
||||
pictureHelp.Name = "pictureHelp";
|
||||
pictureHelp.Size = new Size(32, 32);
|
||||
pictureHelp.TabIndex = 9;
|
||||
@@ -335,19 +375,24 @@ namespace GHelper
|
||||
// groupLight
|
||||
//
|
||||
groupLight.AutoSize = true;
|
||||
groupLight.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
groupLight.Controls.Add(panelBacklightExtra);
|
||||
groupLight.Controls.Add(panelXMG);
|
||||
groupLight.Controls.Add(tableBacklight);
|
||||
groupLight.Dock = DockStyle.Top;
|
||||
groupLight.Location = new Point(10, 370);
|
||||
groupLight.Location = new Point(9, 354);
|
||||
groupLight.Margin = new Padding(4, 2, 4, 2);
|
||||
groupLight.Name = "groupLight";
|
||||
groupLight.Size = new Size(954, 563);
|
||||
groupLight.Padding = new Padding(4, 2, 4, 11);
|
||||
groupLight.Size = new Size(966, 526);
|
||||
groupLight.TabIndex = 1;
|
||||
groupLight.TabStop = false;
|
||||
groupLight.Text = "Keyboard Backlight";
|
||||
//
|
||||
// panelBacklightExtra
|
||||
//
|
||||
panelBacklightExtra.AutoSize = true;
|
||||
panelBacklightExtra.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
panelBacklightExtra.Controls.Add(numericBacklightPluggedTime);
|
||||
panelBacklightExtra.Controls.Add(labelBacklightTimeoutPlugged);
|
||||
panelBacklightExtra.Controls.Add(numericBacklightTime);
|
||||
@@ -357,46 +402,52 @@ namespace GHelper
|
||||
panelBacklightExtra.Controls.Add(labelSpeed);
|
||||
panelBacklightExtra.Controls.Add(comboKeyboardSpeed);
|
||||
panelBacklightExtra.Dock = DockStyle.Top;
|
||||
panelBacklightExtra.Location = new Point(3, 319);
|
||||
panelBacklightExtra.Location = new Point(4, 299);
|
||||
panelBacklightExtra.Margin = new Padding(4, 2, 4, 2);
|
||||
panelBacklightExtra.Name = "panelBacklightExtra";
|
||||
panelBacklightExtra.Size = new Size(948, 241);
|
||||
panelBacklightExtra.Size = new Size(958, 216);
|
||||
panelBacklightExtra.TabIndex = 43;
|
||||
//
|
||||
// numericBacklightPluggedTime
|
||||
//
|
||||
numericBacklightPluggedTime.Location = new Point(655, 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";
|
||||
numericBacklightPluggedTime.Size = new Size(240, 39);
|
||||
numericBacklightPluggedTime.Size = new Size(193, 39);
|
||||
numericBacklightPluggedTime.TabIndex = 49;
|
||||
//
|
||||
// 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(636, 45);
|
||||
labelBacklightTimeoutPlugged.Size = new Size(683, 45);
|
||||
labelBacklightTimeoutPlugged.TabIndex = 48;
|
||||
labelBacklightTimeoutPlugged.Text = "Seconds to turn off backlight when plugged";
|
||||
//
|
||||
// numericBacklightTime
|
||||
//
|
||||
numericBacklightTime.Location = new Point(655, 133);
|
||||
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";
|
||||
numericBacklightTime.Size = new Size(240, 39);
|
||||
numericBacklightTime.Size = new Size(193, 39);
|
||||
numericBacklightTime.TabIndex = 47;
|
||||
//
|
||||
// labelBacklightTimeout
|
||||
//
|
||||
labelBacklightTimeout.Location = new Point(13, 135);
|
||||
labelBacklightTimeout.Location = new Point(13, 122);
|
||||
labelBacklightTimeout.Margin = new Padding(4, 0, 4, 0);
|
||||
labelBacklightTimeout.Name = "labelBacklightTimeout";
|
||||
labelBacklightTimeout.Size = new Size(636, 45);
|
||||
labelBacklightTimeout.Size = new Size(683, 45);
|
||||
labelBacklightTimeout.TabIndex = 46;
|
||||
labelBacklightTimeout.Text = "Seconds to turn off backlight on battery";
|
||||
//
|
||||
// labelBrightness
|
||||
//
|
||||
labelBrightness.Location = new Point(13, 75);
|
||||
labelBrightness.Margin = new Padding(4, 0, 4, 0);
|
||||
labelBrightness.Name = "labelBrightness";
|
||||
labelBrightness.Size = new Size(336, 43);
|
||||
labelBrightness.TabIndex = 41;
|
||||
@@ -405,18 +456,20 @@ 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";
|
||||
trackBrightness.Size = new Size(558, 90);
|
||||
trackBrightness.Size = new Size(557, 90);
|
||||
trackBrightness.TabIndex = 42;
|
||||
trackBrightness.TickStyle = TickStyle.TopLeft;
|
||||
//
|
||||
// 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(538, 40);
|
||||
labelSpeed.Size = new Size(539, 41);
|
||||
labelSpeed.TabIndex = 44;
|
||||
labelSpeed.Text = "Animation Speed";
|
||||
//
|
||||
@@ -429,10 +482,10 @@ namespace GHelper
|
||||
comboKeyboardSpeed.FormattingEnabled = true;
|
||||
comboKeyboardSpeed.ItemHeight = 32;
|
||||
comboKeyboardSpeed.Items.AddRange(new object[] { "Slow", "Normal", "Fast" });
|
||||
comboKeyboardSpeed.Location = new Point(607, 15);
|
||||
comboKeyboardSpeed.Margin = new Padding(4, 10, 4, 8);
|
||||
comboKeyboardSpeed.Location = new Point(607, 16);
|
||||
comboKeyboardSpeed.Margin = new Padding(4, 11, 4, 9);
|
||||
comboKeyboardSpeed.Name = "comboKeyboardSpeed";
|
||||
comboKeyboardSpeed.Size = new Size(291, 40);
|
||||
comboKeyboardSpeed.Size = new Size(292, 40);
|
||||
comboKeyboardSpeed.TabIndex = 43;
|
||||
comboKeyboardSpeed.TabStop = false;
|
||||
//
|
||||
@@ -440,18 +493,20 @@ namespace GHelper
|
||||
//
|
||||
panelXMG.Controls.Add(checkXMG);
|
||||
panelXMG.Dock = DockStyle.Top;
|
||||
panelXMG.Location = new Point(3, 261);
|
||||
panelXMG.Location = new Point(4, 241);
|
||||
panelXMG.Margin = new Padding(4, 2, 4, 2);
|
||||
panelXMG.Name = "panelXMG";
|
||||
panelXMG.Size = new Size(948, 58);
|
||||
panelXMG.Size = new Size(958, 58);
|
||||
panelXMG.TabIndex = 42;
|
||||
//
|
||||
// checkXMG
|
||||
//
|
||||
checkXMG.AutoSize = true;
|
||||
checkXMG.Location = new Point(3, 10);
|
||||
checkXMG.Location = new Point(4, 11);
|
||||
checkXMG.Margin = new Padding(4, 2, 4, 2);
|
||||
checkXMG.Name = "checkXMG";
|
||||
checkXMG.Padding = new Padding(15, 2, 5, 2);
|
||||
checkXMG.Size = new Size(178, 40);
|
||||
checkXMG.Padding = new Padding(15, 2, 6, 2);
|
||||
checkXMG.Size = new Size(179, 40);
|
||||
checkXMG.TabIndex = 2;
|
||||
checkXMG.Text = "XG Mobile";
|
||||
checkXMG.UseVisualStyleBackColor = true;
|
||||
@@ -485,7 +540,7 @@ namespace GHelper
|
||||
tableBacklight.Controls.Add(checkSleepLid, 3, 3);
|
||||
tableBacklight.Controls.Add(checkShutdownLid, 3, 4);
|
||||
tableBacklight.Dock = DockStyle.Top;
|
||||
tableBacklight.Location = new Point(3, 35);
|
||||
tableBacklight.Location = new Point(4, 34);
|
||||
tableBacklight.Margin = new Padding(0);
|
||||
tableBacklight.Name = "tableBacklight";
|
||||
tableBacklight.RowCount = 5;
|
||||
@@ -494,27 +549,29 @@ namespace GHelper
|
||||
tableBacklight.RowStyles.Add(new RowStyle());
|
||||
tableBacklight.RowStyles.Add(new RowStyle());
|
||||
tableBacklight.RowStyles.Add(new RowStyle());
|
||||
tableBacklight.Size = new Size(948, 226);
|
||||
tableBacklight.Size = new Size(958, 207);
|
||||
tableBacklight.TabIndex = 41;
|
||||
//
|
||||
// labelBacklight
|
||||
//
|
||||
labelBacklight.Dock = DockStyle.Fill;
|
||||
labelBacklight.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
labelBacklight.Location = new Point(3, 0);
|
||||
labelBacklight.Location = new Point(4, 0);
|
||||
labelBacklight.Margin = new Padding(4, 0, 4, 0);
|
||||
labelBacklight.Name = "labelBacklight";
|
||||
labelBacklight.Padding = new Padding(10, 5, 5, 5);
|
||||
labelBacklight.Size = new Size(231, 42);
|
||||
labelBacklight.Padding = new Padding(9, 4, 6, 4);
|
||||
labelBacklight.Size = new Size(231, 43);
|
||||
labelBacklight.TabIndex = 6;
|
||||
labelBacklight.Text = "Keyboard";
|
||||
//
|
||||
// checkAwake
|
||||
//
|
||||
checkAwake.Dock = DockStyle.Fill;
|
||||
checkAwake.Location = new Point(3, 45);
|
||||
checkAwake.Location = new Point(4, 43);
|
||||
checkAwake.Margin = new Padding(4, 0, 4, 0);
|
||||
checkAwake.Name = "checkAwake";
|
||||
checkAwake.Padding = new Padding(15, 2, 5, 2);
|
||||
checkAwake.Size = new Size(231, 40);
|
||||
checkAwake.Padding = new Padding(15, 2, 6, 2);
|
||||
checkAwake.Size = new Size(231, 41);
|
||||
checkAwake.TabIndex = 1;
|
||||
checkAwake.Text = Strings.Awake;
|
||||
checkAwake.UseVisualStyleBackColor = true;
|
||||
@@ -522,10 +579,11 @@ namespace GHelper
|
||||
// checkBoot
|
||||
//
|
||||
checkBoot.Dock = DockStyle.Fill;
|
||||
checkBoot.Location = new Point(3, 91);
|
||||
checkBoot.Location = new Point(4, 84);
|
||||
checkBoot.Margin = new Padding(4, 0, 4, 0);
|
||||
checkBoot.Name = "checkBoot";
|
||||
checkBoot.Padding = new Padding(15, 2, 5, 2);
|
||||
checkBoot.Size = new Size(231, 40);
|
||||
checkBoot.Padding = new Padding(15, 2, 6, 2);
|
||||
checkBoot.Size = new Size(231, 41);
|
||||
checkBoot.TabIndex = 2;
|
||||
checkBoot.Text = Strings.Boot;
|
||||
checkBoot.UseVisualStyleBackColor = true;
|
||||
@@ -533,10 +591,11 @@ namespace GHelper
|
||||
// checkSleep
|
||||
//
|
||||
checkSleep.Dock = DockStyle.Fill;
|
||||
checkSleep.Location = new Point(3, 137);
|
||||
checkSleep.Location = new Point(4, 125);
|
||||
checkSleep.Margin = new Padding(4, 0, 4, 0);
|
||||
checkSleep.Name = "checkSleep";
|
||||
checkSleep.Padding = new Padding(15, 2, 5, 2);
|
||||
checkSleep.Size = new Size(231, 40);
|
||||
checkSleep.Padding = new Padding(15, 2, 6, 2);
|
||||
checkSleep.Size = new Size(231, 41);
|
||||
checkSleep.TabIndex = 3;
|
||||
checkSleep.Text = "Sleep";
|
||||
checkSleep.UseVisualStyleBackColor = true;
|
||||
@@ -544,10 +603,11 @@ namespace GHelper
|
||||
// checkShutdown
|
||||
//
|
||||
checkShutdown.Dock = DockStyle.Fill;
|
||||
checkShutdown.Location = new Point(3, 183);
|
||||
checkShutdown.Location = new Point(4, 166);
|
||||
checkShutdown.Margin = new Padding(4, 0, 4, 0);
|
||||
checkShutdown.Name = "checkShutdown";
|
||||
checkShutdown.Padding = new Padding(15, 2, 5, 2);
|
||||
checkShutdown.Size = new Size(231, 40);
|
||||
checkShutdown.Padding = new Padding(15, 2, 6, 2);
|
||||
checkShutdown.Size = new Size(231, 41);
|
||||
checkShutdown.TabIndex = 4;
|
||||
checkShutdown.Text = Strings.Shutdown;
|
||||
checkShutdown.UseVisualStyleBackColor = true;
|
||||
@@ -556,20 +616,22 @@ namespace GHelper
|
||||
//
|
||||
labelBacklightLogo.Dock = DockStyle.Fill;
|
||||
labelBacklightLogo.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
labelBacklightLogo.Location = new Point(240, 0);
|
||||
labelBacklightLogo.Location = new Point(243, 0);
|
||||
labelBacklightLogo.Margin = new Padding(4, 0, 4, 0);
|
||||
labelBacklightLogo.Name = "labelBacklightLogo";
|
||||
labelBacklightLogo.Padding = new Padding(10, 5, 5, 5);
|
||||
labelBacklightLogo.Size = new Size(231, 42);
|
||||
labelBacklightLogo.Padding = new Padding(9, 4, 6, 4);
|
||||
labelBacklightLogo.Size = new Size(231, 43);
|
||||
labelBacklightLogo.TabIndex = 21;
|
||||
labelBacklightLogo.Text = "Logo";
|
||||
//
|
||||
// checkAwakeLogo
|
||||
//
|
||||
checkAwakeLogo.Dock = DockStyle.Fill;
|
||||
checkAwakeLogo.Location = new Point(240, 45);
|
||||
checkAwakeLogo.Location = new Point(243, 43);
|
||||
checkAwakeLogo.Margin = new Padding(4, 0, 4, 0);
|
||||
checkAwakeLogo.Name = "checkAwakeLogo";
|
||||
checkAwakeLogo.Padding = new Padding(15, 2, 5, 2);
|
||||
checkAwakeLogo.Size = new Size(231, 40);
|
||||
checkAwakeLogo.Padding = new Padding(15, 2, 6, 2);
|
||||
checkAwakeLogo.Size = new Size(231, 41);
|
||||
checkAwakeLogo.TabIndex = 17;
|
||||
checkAwakeLogo.Text = Strings.Awake;
|
||||
checkAwakeLogo.UseVisualStyleBackColor = true;
|
||||
@@ -577,10 +639,11 @@ namespace GHelper
|
||||
// checkBootLogo
|
||||
//
|
||||
checkBootLogo.Dock = DockStyle.Fill;
|
||||
checkBootLogo.Location = new Point(240, 91);
|
||||
checkBootLogo.Location = new Point(243, 84);
|
||||
checkBootLogo.Margin = new Padding(4, 0, 4, 0);
|
||||
checkBootLogo.Name = "checkBootLogo";
|
||||
checkBootLogo.Padding = new Padding(15, 2, 5, 2);
|
||||
checkBootLogo.Size = new Size(231, 40);
|
||||
checkBootLogo.Padding = new Padding(15, 2, 6, 2);
|
||||
checkBootLogo.Size = new Size(231, 41);
|
||||
checkBootLogo.TabIndex = 18;
|
||||
checkBootLogo.Text = Strings.Boot;
|
||||
checkBootLogo.UseVisualStyleBackColor = true;
|
||||
@@ -588,10 +651,11 @@ namespace GHelper
|
||||
// checkSleepLogo
|
||||
//
|
||||
checkSleepLogo.Dock = DockStyle.Fill;
|
||||
checkSleepLogo.Location = new Point(240, 137);
|
||||
checkSleepLogo.Location = new Point(243, 125);
|
||||
checkSleepLogo.Margin = new Padding(4, 0, 4, 0);
|
||||
checkSleepLogo.Name = "checkSleepLogo";
|
||||
checkSleepLogo.Padding = new Padding(15, 2, 5, 2);
|
||||
checkSleepLogo.Size = new Size(231, 40);
|
||||
checkSleepLogo.Padding = new Padding(15, 2, 6, 2);
|
||||
checkSleepLogo.Size = new Size(231, 41);
|
||||
checkSleepLogo.TabIndex = 19;
|
||||
checkSleepLogo.Text = Strings.Sleep;
|
||||
checkSleepLogo.UseVisualStyleBackColor = true;
|
||||
@@ -599,10 +663,11 @@ namespace GHelper
|
||||
// checkShutdownLogo
|
||||
//
|
||||
checkShutdownLogo.Dock = DockStyle.Fill;
|
||||
checkShutdownLogo.Location = new Point(240, 183);
|
||||
checkShutdownLogo.Location = new Point(243, 166);
|
||||
checkShutdownLogo.Margin = new Padding(4, 0, 4, 0);
|
||||
checkShutdownLogo.Name = "checkShutdownLogo";
|
||||
checkShutdownLogo.Padding = new Padding(15, 2, 5, 2);
|
||||
checkShutdownLogo.Size = new Size(231, 40);
|
||||
checkShutdownLogo.Padding = new Padding(15, 2, 6, 2);
|
||||
checkShutdownLogo.Size = new Size(231, 41);
|
||||
checkShutdownLogo.TabIndex = 20;
|
||||
checkShutdownLogo.Text = Strings.Shutdown;
|
||||
checkShutdownLogo.UseVisualStyleBackColor = true;
|
||||
@@ -611,20 +676,22 @@ namespace GHelper
|
||||
//
|
||||
labelBacklightBar.Dock = DockStyle.Fill;
|
||||
labelBacklightBar.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
labelBacklightBar.Location = new Point(477, 0);
|
||||
labelBacklightBar.Location = new Point(482, 0);
|
||||
labelBacklightBar.Margin = new Padding(4, 0, 4, 0);
|
||||
labelBacklightBar.Name = "labelBacklightBar";
|
||||
labelBacklightBar.Padding = new Padding(10, 5, 5, 5);
|
||||
labelBacklightBar.Size = new Size(231, 42);
|
||||
labelBacklightBar.Padding = new Padding(9, 4, 6, 4);
|
||||
labelBacklightBar.Size = new Size(231, 43);
|
||||
labelBacklightBar.TabIndex = 11;
|
||||
labelBacklightBar.Text = "Lightbar";
|
||||
//
|
||||
// checkAwakeBar
|
||||
//
|
||||
checkAwakeBar.Dock = DockStyle.Fill;
|
||||
checkAwakeBar.Location = new Point(477, 45);
|
||||
checkAwakeBar.Location = new Point(482, 43);
|
||||
checkAwakeBar.Margin = new Padding(4, 0, 4, 0);
|
||||
checkAwakeBar.Name = "checkAwakeBar";
|
||||
checkAwakeBar.Padding = new Padding(15, 2, 5, 2);
|
||||
checkAwakeBar.Size = new Size(231, 40);
|
||||
checkAwakeBar.Padding = new Padding(15, 2, 6, 2);
|
||||
checkAwakeBar.Size = new Size(231, 41);
|
||||
checkAwakeBar.TabIndex = 7;
|
||||
checkAwakeBar.Text = Strings.Awake;
|
||||
checkAwakeBar.UseVisualStyleBackColor = true;
|
||||
@@ -632,10 +699,11 @@ namespace GHelper
|
||||
// checkBootBar
|
||||
//
|
||||
checkBootBar.Dock = DockStyle.Fill;
|
||||
checkBootBar.Location = new Point(477, 91);
|
||||
checkBootBar.Location = new Point(482, 84);
|
||||
checkBootBar.Margin = new Padding(4, 0, 4, 0);
|
||||
checkBootBar.Name = "checkBootBar";
|
||||
checkBootBar.Padding = new Padding(15, 2, 5, 2);
|
||||
checkBootBar.Size = new Size(231, 40);
|
||||
checkBootBar.Padding = new Padding(15, 2, 6, 2);
|
||||
checkBootBar.Size = new Size(231, 41);
|
||||
checkBootBar.TabIndex = 8;
|
||||
checkBootBar.Text = Strings.Boot;
|
||||
checkBootBar.UseVisualStyleBackColor = true;
|
||||
@@ -643,10 +711,11 @@ namespace GHelper
|
||||
// checkSleepBar
|
||||
//
|
||||
checkSleepBar.Dock = DockStyle.Fill;
|
||||
checkSleepBar.Location = new Point(477, 137);
|
||||
checkSleepBar.Location = new Point(482, 125);
|
||||
checkSleepBar.Margin = new Padding(4, 0, 4, 0);
|
||||
checkSleepBar.Name = "checkSleepBar";
|
||||
checkSleepBar.Padding = new Padding(15, 2, 5, 2);
|
||||
checkSleepBar.Size = new Size(231, 40);
|
||||
checkSleepBar.Padding = new Padding(15, 2, 6, 2);
|
||||
checkSleepBar.Size = new Size(231, 41);
|
||||
checkSleepBar.TabIndex = 9;
|
||||
checkSleepBar.Text = Strings.Sleep;
|
||||
checkSleepBar.UseVisualStyleBackColor = true;
|
||||
@@ -654,10 +723,11 @@ namespace GHelper
|
||||
// checkShutdownBar
|
||||
//
|
||||
checkShutdownBar.Dock = DockStyle.Fill;
|
||||
checkShutdownBar.Location = new Point(477, 183);
|
||||
checkShutdownBar.Location = new Point(482, 166);
|
||||
checkShutdownBar.Margin = new Padding(4, 0, 4, 0);
|
||||
checkShutdownBar.Name = "checkShutdownBar";
|
||||
checkShutdownBar.Padding = new Padding(15, 2, 5, 2);
|
||||
checkShutdownBar.Size = new Size(231, 40);
|
||||
checkShutdownBar.Padding = new Padding(15, 2, 6, 2);
|
||||
checkShutdownBar.Size = new Size(231, 41);
|
||||
checkShutdownBar.TabIndex = 10;
|
||||
checkShutdownBar.Text = Strings.Shutdown;
|
||||
checkShutdownBar.UseVisualStyleBackColor = true;
|
||||
@@ -666,20 +736,22 @@ namespace GHelper
|
||||
//
|
||||
labelBacklightLid.Dock = DockStyle.Fill;
|
||||
labelBacklightLid.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
labelBacklightLid.Location = new Point(714, 0);
|
||||
labelBacklightLid.Location = new Point(721, 0);
|
||||
labelBacklightLid.Margin = new Padding(4, 0, 4, 0);
|
||||
labelBacklightLid.Name = "labelBacklightLid";
|
||||
labelBacklightLid.Padding = new Padding(10, 5, 5, 5);
|
||||
labelBacklightLid.Size = new Size(231, 42);
|
||||
labelBacklightLid.Padding = new Padding(9, 4, 6, 4);
|
||||
labelBacklightLid.Size = new Size(233, 43);
|
||||
labelBacklightLid.TabIndex = 16;
|
||||
labelBacklightLid.Text = "Lid";
|
||||
//
|
||||
// checkAwakeLid
|
||||
//
|
||||
checkAwakeLid.Dock = DockStyle.Fill;
|
||||
checkAwakeLid.Location = new Point(714, 45);
|
||||
checkAwakeLid.Location = new Point(721, 43);
|
||||
checkAwakeLid.Margin = new Padding(4, 0, 4, 0);
|
||||
checkAwakeLid.Name = "checkAwakeLid";
|
||||
checkAwakeLid.Padding = new Padding(15, 2, 5, 2);
|
||||
checkAwakeLid.Size = new Size(231, 40);
|
||||
checkAwakeLid.Padding = new Padding(15, 2, 6, 2);
|
||||
checkAwakeLid.Size = new Size(233, 41);
|
||||
checkAwakeLid.TabIndex = 12;
|
||||
checkAwakeLid.Text = Strings.Awake;
|
||||
checkAwakeLid.UseVisualStyleBackColor = true;
|
||||
@@ -687,10 +759,11 @@ namespace GHelper
|
||||
// checkBootLid
|
||||
//
|
||||
checkBootLid.Dock = DockStyle.Fill;
|
||||
checkBootLid.Location = new Point(714, 91);
|
||||
checkBootLid.Location = new Point(721, 84);
|
||||
checkBootLid.Margin = new Padding(4, 0, 4, 0);
|
||||
checkBootLid.Name = "checkBootLid";
|
||||
checkBootLid.Padding = new Padding(15, 2, 5, 2);
|
||||
checkBootLid.Size = new Size(231, 40);
|
||||
checkBootLid.Padding = new Padding(15, 2, 6, 2);
|
||||
checkBootLid.Size = new Size(233, 41);
|
||||
checkBootLid.TabIndex = 13;
|
||||
checkBootLid.Text = Strings.Boot;
|
||||
checkBootLid.UseVisualStyleBackColor = true;
|
||||
@@ -698,10 +771,11 @@ namespace GHelper
|
||||
// checkSleepLid
|
||||
//
|
||||
checkSleepLid.Dock = DockStyle.Fill;
|
||||
checkSleepLid.Location = new Point(714, 137);
|
||||
checkSleepLid.Location = new Point(721, 125);
|
||||
checkSleepLid.Margin = new Padding(4, 0, 4, 0);
|
||||
checkSleepLid.Name = "checkSleepLid";
|
||||
checkSleepLid.Padding = new Padding(15, 2, 5, 2);
|
||||
checkSleepLid.Size = new Size(231, 40);
|
||||
checkSleepLid.Padding = new Padding(15, 2, 6, 2);
|
||||
checkSleepLid.Size = new Size(233, 41);
|
||||
checkSleepLid.TabIndex = 14;
|
||||
checkSleepLid.Text = Strings.Sleep;
|
||||
checkSleepLid.UseVisualStyleBackColor = true;
|
||||
@@ -709,90 +783,157 @@ namespace GHelper
|
||||
// checkShutdownLid
|
||||
//
|
||||
checkShutdownLid.Dock = DockStyle.Fill;
|
||||
checkShutdownLid.Location = new Point(714, 183);
|
||||
checkShutdownLid.Location = new Point(721, 166);
|
||||
checkShutdownLid.Margin = new Padding(4, 0, 4, 0);
|
||||
checkShutdownLid.Name = "checkShutdownLid";
|
||||
checkShutdownLid.Padding = new Padding(15, 2, 5, 2);
|
||||
checkShutdownLid.Size = new Size(231, 40);
|
||||
checkShutdownLid.Padding = new Padding(15, 2, 6, 2);
|
||||
checkShutdownLid.Size = new Size(233, 41);
|
||||
checkShutdownLid.TabIndex = 15;
|
||||
checkShutdownLid.Text = Strings.Shutdown;
|
||||
checkShutdownLid.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupOther
|
||||
//
|
||||
groupOther.Controls.Add(checkFnLock);
|
||||
groupOther.Controls.Add(checkGpuApps);
|
||||
groupOther.AutoSize = true;
|
||||
groupOther.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
groupOther.Controls.Add(checkAutoApplyWindowsPowerMode);
|
||||
groupOther.Controls.Add(checkUSBC);
|
||||
groupOther.Controls.Add(checkNoOverdrive);
|
||||
groupOther.Controls.Add(checkTopmost);
|
||||
groupOther.Controls.Add(checkNoOverdrive);
|
||||
groupOther.Controls.Add(checkUSBC);
|
||||
groupOther.Controls.Add(checkVariBright);
|
||||
groupOther.Controls.Add(checkGpuApps);
|
||||
groupOther.Controls.Add(checkFnLock);
|
||||
groupOther.Dock = DockStyle.Top;
|
||||
groupOther.Location = new Point(10, 933);
|
||||
groupOther.Location = new Point(9, 880);
|
||||
groupOther.Margin = new Padding(4, 2, 4, 2);
|
||||
groupOther.Name = "groupOther";
|
||||
groupOther.Size = new Size(954, 300);
|
||||
groupOther.Padding = new Padding(20, 2, 4, 10);
|
||||
groupOther.Size = new Size(966, 296);
|
||||
groupOther.TabIndex = 2;
|
||||
groupOther.TabStop = false;
|
||||
groupOther.Text = "Other";
|
||||
//
|
||||
// checkFnLock
|
||||
//
|
||||
checkFnLock.AutoSize = true;
|
||||
checkFnLock.Location = new Point(25, 44);
|
||||
checkFnLock.MaximumSize = new Size(780, 0);
|
||||
checkFnLock.Name = "checkFnLock";
|
||||
checkFnLock.Size = new Size(397, 36);
|
||||
checkFnLock.TabIndex = 49;
|
||||
checkFnLock.Text = "Process Fn+F hotkeys without Fn";
|
||||
checkFnLock.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkGpuApps
|
||||
//
|
||||
checkGpuApps.AutoSize = true;
|
||||
checkGpuApps.Location = new Point(25, 83);
|
||||
checkGpuApps.Name = "checkGpuApps";
|
||||
checkGpuApps.Size = new Size(544, 36);
|
||||
checkGpuApps.TabIndex = 48;
|
||||
checkGpuApps.Text = "Stop all apps using GPU when switching to Eco";
|
||||
checkGpuApps.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkAutoApplyWindowsPowerMode
|
||||
//
|
||||
checkAutoApplyWindowsPowerMode.AutoSize = true;
|
||||
checkAutoApplyWindowsPowerMode.Location = new Point(25, 251);
|
||||
checkAutoApplyWindowsPowerMode.Dock = DockStyle.Top;
|
||||
checkAutoApplyWindowsPowerMode.Location = new Point(20, 250);
|
||||
checkAutoApplyWindowsPowerMode.Margin = new Padding(4, 2, 4, 2);
|
||||
checkAutoApplyWindowsPowerMode.Name = "checkAutoApplyWindowsPowerMode";
|
||||
checkAutoApplyWindowsPowerMode.Size = new Size(416, 36);
|
||||
checkAutoApplyWindowsPowerMode.Size = new Size(942, 36);
|
||||
checkAutoApplyWindowsPowerMode.TabIndex = 47;
|
||||
checkAutoApplyWindowsPowerMode.Text = "Auto Adjust Windows Power Mode";
|
||||
checkAutoApplyWindowsPowerMode.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkUSBC
|
||||
// checkTopmost
|
||||
//
|
||||
checkUSBC.AutoSize = true;
|
||||
checkUSBC.Location = new Point(25, 125);
|
||||
checkUSBC.Name = "checkUSBC";
|
||||
checkUSBC.Size = new Size(659, 36);
|
||||
checkUSBC.TabIndex = 4;
|
||||
checkUSBC.Text = "Keep GPU disabled on USB-C charger in Optimized mode";
|
||||
checkUSBC.UseVisualStyleBackColor = true;
|
||||
checkTopmost.AutoSize = true;
|
||||
checkTopmost.Dock = DockStyle.Top;
|
||||
checkTopmost.Location = new Point(20, 214);
|
||||
checkTopmost.Margin = new Padding(4, 2, 4, 2);
|
||||
checkTopmost.Name = "checkTopmost";
|
||||
checkTopmost.Size = new Size(942, 36);
|
||||
checkTopmost.TabIndex = 1;
|
||||
checkTopmost.Text = Strings.WindowTop;
|
||||
checkTopmost.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkNoOverdrive
|
||||
//
|
||||
checkNoOverdrive.AutoSize = true;
|
||||
checkNoOverdrive.Location = new Point(25, 167);
|
||||
checkNoOverdrive.Dock = DockStyle.Top;
|
||||
checkNoOverdrive.Location = new Point(20, 178);
|
||||
checkNoOverdrive.Margin = new Padding(4, 2, 4, 2);
|
||||
checkNoOverdrive.Name = "checkNoOverdrive";
|
||||
checkNoOverdrive.Size = new Size(307, 36);
|
||||
checkNoOverdrive.Size = new Size(942, 36);
|
||||
checkNoOverdrive.TabIndex = 3;
|
||||
checkNoOverdrive.Text = Strings.DisableOverdrive;
|
||||
checkNoOverdrive.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkTopmost
|
||||
// checkUSBC
|
||||
//
|
||||
checkTopmost.AutoSize = true;
|
||||
checkTopmost.Location = new Point(25, 209);
|
||||
checkTopmost.Name = "checkTopmost";
|
||||
checkTopmost.Size = new Size(390, 36);
|
||||
checkTopmost.TabIndex = 1;
|
||||
checkTopmost.Text = Strings.WindowTop;
|
||||
checkTopmost.UseVisualStyleBackColor = true;
|
||||
checkUSBC.AutoSize = true;
|
||||
checkUSBC.Dock = DockStyle.Top;
|
||||
checkUSBC.Location = new Point(20, 142);
|
||||
checkUSBC.Margin = new Padding(4, 2, 4, 2);
|
||||
checkUSBC.Name = "checkUSBC";
|
||||
checkUSBC.Size = new Size(942, 36);
|
||||
checkUSBC.TabIndex = 4;
|
||||
checkUSBC.Text = "Keep GPU disabled on USB-C charger in Optimized mode";
|
||||
checkUSBC.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkVariBright
|
||||
//
|
||||
checkVariBright.AutoSize = true;
|
||||
checkVariBright.Dock = DockStyle.Top;
|
||||
checkVariBright.Location = new Point(20, 106);
|
||||
checkVariBright.Margin = new Padding(4, 2, 4, 2);
|
||||
checkVariBright.Name = "checkVariBright";
|
||||
checkVariBright.Size = new Size(942, 36);
|
||||
checkVariBright.TabIndex = 50;
|
||||
checkVariBright.Text = "AMD Display VariBright";
|
||||
checkVariBright.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkGpuApps
|
||||
//
|
||||
checkGpuApps.AutoSize = true;
|
||||
checkGpuApps.Dock = DockStyle.Top;
|
||||
checkGpuApps.Location = new Point(20, 70);
|
||||
checkGpuApps.Margin = new Padding(4, 2, 4, 2);
|
||||
checkGpuApps.Name = "checkGpuApps";
|
||||
checkGpuApps.Size = new Size(942, 36);
|
||||
checkGpuApps.TabIndex = 48;
|
||||
checkGpuApps.Text = "Stop all apps using GPU when switching to Eco";
|
||||
checkGpuApps.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkFnLock
|
||||
//
|
||||
checkFnLock.AutoSize = true;
|
||||
checkFnLock.Dock = DockStyle.Top;
|
||||
checkFnLock.Location = new Point(20, 34);
|
||||
checkFnLock.Margin = new Padding(4, 2, 4, 2);
|
||||
checkFnLock.MaximumSize = new Size(780, 0);
|
||||
checkFnLock.Name = "checkFnLock";
|
||||
checkFnLock.Size = new Size(780, 36);
|
||||
checkFnLock.TabIndex = 49;
|
||||
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
|
||||
//
|
||||
@@ -800,17 +941,19 @@ namespace GHelper
|
||||
AutoScaleMode = AutoScaleMode.Font;
|
||||
AutoSize = true;
|
||||
AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
ClientSize = new Size(974, 1247);
|
||||
ClientSize = new Size(984, 1262);
|
||||
Controls.Add(panelServices);
|
||||
Controls.Add(groupOther);
|
||||
Controls.Add(groupLight);
|
||||
Controls.Add(groupBindings);
|
||||
FormBorderStyle = FormBorderStyle.FixedSingle;
|
||||
Margin = new Padding(4, 2, 4, 2);
|
||||
MaximizeBox = false;
|
||||
MdiChildrenMinimizedAnchorBottom = false;
|
||||
MinimizeBox = false;
|
||||
MinimumSize = new Size(1000, 0);
|
||||
MinimumSize = new Size(1010, 71);
|
||||
Name = "Extra";
|
||||
Padding = new Padding(10);
|
||||
Padding = new Padding(9, 11, 9, 11);
|
||||
ShowIcon = false;
|
||||
ShowInTaskbar = false;
|
||||
Text = "Extra Settings";
|
||||
@@ -830,6 +973,8 @@ namespace GHelper
|
||||
tableBacklight.ResumeLayout(false);
|
||||
groupOther.ResumeLayout(false);
|
||||
groupOther.PerformLayout();
|
||||
panelServices.ResumeLayout(false);
|
||||
panelServices.PerformLayout();
|
||||
ResumeLayout(false);
|
||||
PerformLayout();
|
||||
}
|
||||
@@ -897,5 +1042,9 @@ namespace GHelper
|
||||
private Label labelFNC;
|
||||
private RComboBox comboFNC;
|
||||
private TextBox textFNC;
|
||||
private CheckBox checkVariBright;
|
||||
private Panel panelServices;
|
||||
private RButton buttonServices;
|
||||
private Label labelServices;
|
||||
}
|
||||
}
|
||||
96
app/Extra.cs
96
app/Extra.cs
@@ -1,5 +1,5 @@
|
||||
using CustomControls;
|
||||
using Microsoft.VisualBasic.Devices;
|
||||
using GHelper.Gpu;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace GHelper
|
||||
@@ -18,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}
|
||||
};
|
||||
|
||||
@@ -227,6 +229,98 @@ namespace GHelper
|
||||
checkFnLock.CheckedChanged += CheckFnLock_CheckedChanged; ;
|
||||
|
||||
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()
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var amdControl = new AmdGpuControl())
|
||||
{
|
||||
int variBrightSupported = 0, VariBrightEnabled;
|
||||
if (amdControl.GetVariBright(out variBrightSupported, out VariBrightEnabled))
|
||||
{
|
||||
Logger.WriteLine("Varibright: " + variBrightSupported + "," + VariBrightEnabled);
|
||||
checkVariBright.Checked = (VariBrightEnabled == 3);
|
||||
}
|
||||
|
||||
checkVariBright.Visible = (variBrightSupported > 0);
|
||||
checkVariBright.CheckedChanged += CheckVariBright_CheckedChanged;
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.WriteLine(ex.ToString());
|
||||
checkVariBright.Visible = false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void CheckVariBright_CheckedChanged(object? sender, EventArgs e)
|
||||
{
|
||||
using (var amdControl = new AmdGpuControl())
|
||||
{
|
||||
amdControl.SetVariBright(checkVariBright.Checked ? 1 : 0);
|
||||
ProcessHelper.KillByName("RadeonSoftware");
|
||||
}
|
||||
}
|
||||
|
||||
private void CheckFnLock_CheckedChanged(object? sender, EventArgs e)
|
||||
|
||||
49
app/Fans.Designer.cs
generated
49
app/Fans.Designer.cs
generated
@@ -31,14 +31,14 @@ namespace GHelper
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
ChartArea chartArea5 = new ChartArea();
|
||||
Title title5 = new Title();
|
||||
ChartArea chartArea6 = new ChartArea();
|
||||
Title title6 = new Title();
|
||||
ChartArea chartArea7 = new ChartArea();
|
||||
Title title7 = new Title();
|
||||
ChartArea chartArea8 = new ChartArea();
|
||||
Title title8 = new Title();
|
||||
ChartArea chartArea1 = new ChartArea();
|
||||
Title title1 = new Title();
|
||||
ChartArea chartArea2 = new ChartArea();
|
||||
Title title2 = new Title();
|
||||
ChartArea chartArea3 = new ChartArea();
|
||||
Title title3 = new Title();
|
||||
ChartArea chartArea4 = new ChartArea();
|
||||
Title title4 = new Title();
|
||||
panelFans = new Panel();
|
||||
labelTip = new Label();
|
||||
tableFanCharts = new TableLayoutPanel();
|
||||
@@ -181,8 +181,8 @@ namespace GHelper
|
||||
//
|
||||
// chartGPU
|
||||
//
|
||||
chartArea5.Name = "ChartArea1";
|
||||
chartGPU.ChartAreas.Add(chartArea5);
|
||||
chartArea1.Name = "ChartArea1";
|
||||
chartGPU.ChartAreas.Add(chartArea1);
|
||||
chartGPU.Dock = DockStyle.Fill;
|
||||
chartGPU.Location = new Point(12, 289);
|
||||
chartGPU.Margin = new Padding(2, 10, 2, 10);
|
||||
@@ -190,13 +190,13 @@ namespace GHelper
|
||||
chartGPU.Size = new Size(781, 259);
|
||||
chartGPU.TabIndex = 17;
|
||||
chartGPU.Text = "chartGPU";
|
||||
title5.Name = "Title1";
|
||||
chartGPU.Titles.Add(title5);
|
||||
title1.Name = "Title1";
|
||||
chartGPU.Titles.Add(title1);
|
||||
//
|
||||
// chartCPU
|
||||
//
|
||||
chartArea6.Name = "ChartArea1";
|
||||
chartCPU.ChartAreas.Add(chartArea6);
|
||||
chartArea2.Name = "ChartArea1";
|
||||
chartCPU.ChartAreas.Add(chartArea2);
|
||||
chartCPU.Dock = DockStyle.Fill;
|
||||
chartCPU.Location = new Point(12, 10);
|
||||
chartCPU.Margin = new Padding(2, 10, 2, 10);
|
||||
@@ -204,13 +204,13 @@ namespace GHelper
|
||||
chartCPU.Size = new Size(781, 259);
|
||||
chartCPU.TabIndex = 14;
|
||||
chartCPU.Text = "chartCPU";
|
||||
title6.Name = "Title1";
|
||||
chartCPU.Titles.Add(title6);
|
||||
title2.Name = "Title1";
|
||||
chartCPU.Titles.Add(title2);
|
||||
//
|
||||
// chartXGM
|
||||
//
|
||||
chartArea7.Name = "ChartAreaXGM";
|
||||
chartXGM.ChartAreas.Add(chartArea7);
|
||||
chartArea3.Name = "ChartAreaXGM";
|
||||
chartXGM.ChartAreas.Add(chartArea3);
|
||||
chartXGM.Dock = DockStyle.Fill;
|
||||
chartXGM.Location = new Point(12, 847);
|
||||
chartXGM.Margin = new Padding(2, 10, 2, 10);
|
||||
@@ -218,14 +218,14 @@ namespace GHelper
|
||||
chartXGM.Size = new Size(781, 261);
|
||||
chartXGM.TabIndex = 14;
|
||||
chartXGM.Text = "chartXGM";
|
||||
title7.Name = "Title4";
|
||||
chartXGM.Titles.Add(title7);
|
||||
title3.Name = "Title4";
|
||||
chartXGM.Titles.Add(title3);
|
||||
chartXGM.Visible = false;
|
||||
//
|
||||
// chartMid
|
||||
//
|
||||
chartArea8.Name = "ChartArea3";
|
||||
chartMid.ChartAreas.Add(chartArea8);
|
||||
chartArea4.Name = "ChartArea3";
|
||||
chartMid.ChartAreas.Add(chartArea4);
|
||||
chartMid.Dock = DockStyle.Fill;
|
||||
chartMid.Location = new Point(12, 568);
|
||||
chartMid.Margin = new Padding(2, 10, 2, 10);
|
||||
@@ -233,8 +233,8 @@ namespace GHelper
|
||||
chartMid.Size = new Size(781, 259);
|
||||
chartMid.TabIndex = 14;
|
||||
chartMid.Text = "chartMid";
|
||||
title8.Name = "Title3";
|
||||
chartMid.Titles.Add(title8);
|
||||
title4.Name = "Title3";
|
||||
chartMid.Titles.Add(title4);
|
||||
chartMid.Visible = false;
|
||||
//
|
||||
// panelTitleFans
|
||||
@@ -847,7 +847,6 @@ namespace GHelper
|
||||
Controls.Add(panelSliders);
|
||||
Margin = new Padding(4, 2, 4, 2);
|
||||
MaximizeBox = false;
|
||||
MdiChildrenMinimizedAnchorBottom = false;
|
||||
MinimizeBox = false;
|
||||
MinimumSize = new Size(0, 1200);
|
||||
Name = "Fans";
|
||||
|
||||
90
app/Fans.cs
90
app/Fans.cs
@@ -1,5 +1,6 @@
|
||||
using CustomControls;
|
||||
using GHelper.Gpu;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Windows.Forms.DataVisualization.Charting;
|
||||
|
||||
@@ -8,7 +9,9 @@ namespace GHelper
|
||||
public partial class Fans : RForm
|
||||
{
|
||||
|
||||
int curIndex = -1;
|
||||
DataPoint curPoint = null;
|
||||
|
||||
Series seriesCPU;
|
||||
Series seriesGPU;
|
||||
Series seriesMid;
|
||||
@@ -357,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();
|
||||
|
||||
}
|
||||
|
||||
@@ -377,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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -437,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)
|
||||
{
|
||||
@@ -618,27 +605,35 @@ 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)
|
||||
{
|
||||
curPoint = null;
|
||||
curIndex = -1;
|
||||
|
||||
labelTip.Visible = false;
|
||||
|
||||
SaveProfile(seriesCPU, AsusFan.CPU);
|
||||
@@ -668,9 +663,12 @@ namespace GHelper
|
||||
bool tip = false;
|
||||
|
||||
HitTestResult hit = chart.HitTest(e.X, e.Y);
|
||||
Series series = chart.Series[0];
|
||||
|
||||
if (hit.Series is not null && hit.PointIndex >= 0)
|
||||
{
|
||||
curPoint = hit.Series.Points[hit.PointIndex];
|
||||
curIndex = hit.PointIndex;
|
||||
curPoint = hit.Series.Points[curIndex];
|
||||
tip = true;
|
||||
}
|
||||
|
||||
@@ -697,11 +695,18 @@ namespace GHelper
|
||||
|
||||
if (e.Button.HasFlag(MouseButtons.Left))
|
||||
{
|
||||
curPoint.XValue = dx;
|
||||
curPoint.YValues[0] = dy;
|
||||
double deltaY = dy - curPoint.YValues[0];
|
||||
double deltaX = dx - curPoint.XValue;
|
||||
|
||||
if (hit.Series is not null)
|
||||
AdjustAllLevels(hit.PointIndex, dx, dy, hit.Series);
|
||||
curPoint.XValue = dx;
|
||||
|
||||
if (Control.ModifierKeys == Keys.Shift)
|
||||
AdjustAll(0, deltaY, series);
|
||||
else
|
||||
{
|
||||
curPoint.YValues[0] = dy;
|
||||
AdjustAllLevels(curIndex, dx, dy, series);
|
||||
}
|
||||
|
||||
tip = true;
|
||||
}
|
||||
@@ -724,6 +729,15 @@ namespace GHelper
|
||||
|
||||
}
|
||||
|
||||
private void AdjustAll(double deltaX, double deltaY, Series series)
|
||||
{
|
||||
for (int i = 0; i < series.Points.Count; i++)
|
||||
{
|
||||
series.Points[i].XValue = Math.Max(20, Math.Min(100, series.Points[i].XValue + deltaX));
|
||||
series.Points[i].YValues[0] = Math.Max(0, Math.Min(100, series.Points[i].YValues[0]+deltaY));
|
||||
}
|
||||
}
|
||||
|
||||
private void AdjustAllLevels(int index, double curXVal, double curYVal, Series series)
|
||||
{
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||
<AssemblyVersion>0.76</AssemblyVersion>
|
||||
<AssemblyVersion>0.81</AssemblyVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
||||
@@ -1,10 +1,37 @@
|
||||
using System.Diagnostics;
|
||||
using System.Runtime.InteropServices;
|
||||
using static AmdAdl2.Adl2.NativeMethods;
|
||||
|
||||
namespace AmdAdl2;
|
||||
|
||||
#region Export Struct
|
||||
|
||||
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
|
||||
public struct ADLSGApplicationInfo
|
||||
{
|
||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
|
||||
public string strFileName;
|
||||
|
||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
|
||||
public string strFilePath;
|
||||
|
||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
|
||||
public string strVersion;
|
||||
|
||||
public long timeStamp;
|
||||
public uint iProfileExists;
|
||||
public uint iGPUAffinity;
|
||||
public ADLBdf GPUBdf;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct ADLBdf
|
||||
{
|
||||
public int iBus;
|
||||
public int iDevice;
|
||||
public int iFunction;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct ADLSingleSensorData {
|
||||
public int Supported;
|
||||
@@ -481,5 +508,71 @@ public class Adl2 {
|
||||
|
||||
[DllImport(Atiadlxx_FileName)]
|
||||
public static extern int ADL2_Adapter_ASICFamilyType_Get(IntPtr adlContextHandle, int adapterIndex, out ADLAsicFamilyType asicFamilyType, out int asicFamilyTypeValids);
|
||||
|
||||
[DllImport(Atiadlxx_FileName)]
|
||||
public static extern int ADL2_SwitchableGraphics_Applications_Get(
|
||||
IntPtr context,
|
||||
int iListType,
|
||||
out int lpNumApps,
|
||||
out IntPtr lppAppList);
|
||||
|
||||
[DllImport(Atiadlxx_FileName)]
|
||||
public static extern int ADL2_Adapter_VariBright_Caps(
|
||||
IntPtr context,
|
||||
int iAdapterIndex,
|
||||
out int iSupported,
|
||||
out int iEnabled,
|
||||
out int iVersion);
|
||||
|
||||
[DllImport(Atiadlxx_FileName)]
|
||||
public static extern int ADL2_Adapter_VariBrightEnable_Set(
|
||||
IntPtr context,
|
||||
int iAdapterIndex,
|
||||
int iEnabled);
|
||||
|
||||
// Clocks
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct ADLODNPerformanceLevel
|
||||
{
|
||||
public int iClock;
|
||||
public int iVddc;
|
||||
public int iEnabled;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct ADLODNPerformanceLevels
|
||||
{
|
||||
public int iSize;
|
||||
public int iMode;
|
||||
public int iNumberOfPerformanceLevels;
|
||||
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)]
|
||||
public ADLODNPerformanceLevel[] aLevels;
|
||||
}
|
||||
|
||||
|
||||
[DllImport(Atiadlxx_FileName)]
|
||||
public static extern int ADL2_OverdriveN_SystemClocks_Get(
|
||||
IntPtr context,
|
||||
int adapterIndex,
|
||||
ref ADLODNPerformanceLevels performanceLevels);
|
||||
|
||||
[DllImport(Atiadlxx_FileName)]
|
||||
public static extern int ADL2_OverdriveN_SystemClocks_Set(
|
||||
IntPtr context,
|
||||
int adapterIndex,
|
||||
ref ADLODNPerformanceLevels performanceLevels);
|
||||
|
||||
[DllImport(Atiadlxx_FileName)]
|
||||
public static extern int ADL2_OverdriveN_MemoryClocks_Get(
|
||||
IntPtr context,
|
||||
int adapterIndex,
|
||||
ref ADLODNPerformanceLevels performanceLevels);
|
||||
|
||||
[DllImport(Atiadlxx_FileName)]
|
||||
public static extern int ADL2_OverdriveN_MemoryClocks_Set(
|
||||
IntPtr context,
|
||||
int adapterIndex,
|
||||
ref ADLODNPerformanceLevels performanceLevels);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
using System.Runtime.InteropServices;
|
||||
using AmdAdl2;
|
||||
using System.Runtime.InteropServices;
|
||||
using static AmdAdl2.Adl2.NativeMethods;
|
||||
|
||||
namespace GHelper.Gpu;
|
||||
|
||||
// Reference: https://github.com/GPUOpen-LibrariesAndSDKs/display-library/blob/master/Sample-Managed/Program.cs
|
||||
public class AmdGpuControl : IGpuControl {
|
||||
public class AmdGpuControl : IGpuControl
|
||||
{
|
||||
private bool _isReady;
|
||||
private IntPtr _adlContextHandle;
|
||||
private readonly ADLAdapterInfo _internalDiscreteAdapter;
|
||||
@@ -12,64 +14,79 @@ public class AmdGpuControl : IGpuControl {
|
||||
public bool IsNvidia => false;
|
||||
|
||||
public string FullName => _internalDiscreteAdapter!.AdapterName;
|
||||
public AmdGpuControl() {
|
||||
|
||||
private ADLAdapterInfo? FindByType(ADLAsicFamilyType type = ADLAsicFamilyType.Discrete)
|
||||
{
|
||||
ADL2_Adapter_NumberOfAdapters_Get(_adlContextHandle, out int numberOfAdapters);
|
||||
if (numberOfAdapters <= 0)
|
||||
return null;
|
||||
|
||||
ADLAdapterInfoArray osAdapterInfoData = new();
|
||||
int osAdapterInfoDataSize = Marshal.SizeOf(osAdapterInfoData);
|
||||
IntPtr AdapterBuffer = Marshal.AllocCoTaskMem(osAdapterInfoDataSize);
|
||||
Marshal.StructureToPtr(osAdapterInfoData, AdapterBuffer, false);
|
||||
if (ADL2_Adapter_AdapterInfo_Get(_adlContextHandle, AdapterBuffer, osAdapterInfoDataSize) != Adl2.ADL_SUCCESS)
|
||||
return null;
|
||||
|
||||
osAdapterInfoData = (ADLAdapterInfoArray)Marshal.PtrToStructure(AdapterBuffer, osAdapterInfoData.GetType())!;
|
||||
|
||||
const int amdVendorId = 1002;
|
||||
|
||||
// Determine which GPU is internal discrete AMD GPU
|
||||
ADLAdapterInfo internalDiscreteAdapter =
|
||||
osAdapterInfoData.ADLAdapterInfo
|
||||
.FirstOrDefault(adapter =>
|
||||
{
|
||||
if (adapter.Exist == 0 || adapter.Present == 0)
|
||||
return false;
|
||||
|
||||
if (adapter.VendorID != amdVendorId)
|
||||
return false;
|
||||
|
||||
if (ADL2_Adapter_ASICFamilyType_Get(_adlContextHandle, adapter.AdapterIndex, out ADLAsicFamilyType asicFamilyType, out int asicFamilyTypeValids) != Adl2.ADL_SUCCESS)
|
||||
return false;
|
||||
|
||||
asicFamilyType = (ADLAsicFamilyType)((int)asicFamilyType & asicFamilyTypeValids);
|
||||
|
||||
return (asicFamilyType & type) != 0;
|
||||
});
|
||||
|
||||
if (internalDiscreteAdapter.Exist == 0)
|
||||
return null;
|
||||
|
||||
return internalDiscreteAdapter;
|
||||
|
||||
}
|
||||
|
||||
public AmdGpuControl()
|
||||
{
|
||||
if (!Adl2.Load())
|
||||
return;
|
||||
|
||||
if (Adl2.ADL2_Main_Control_Create(1, out _adlContextHandle) != Adl2.ADL_SUCCESS)
|
||||
return;
|
||||
|
||||
Adl2.NativeMethods.ADL2_Adapter_NumberOfAdapters_Get(_adlContextHandle, out int numberOfAdapters);
|
||||
if (numberOfAdapters <= 0)
|
||||
return;
|
||||
ADLAdapterInfo? internalDiscreteAdapter = FindByType(ADLAsicFamilyType.Discrete);
|
||||
|
||||
ADLAdapterInfoArray osAdapterInfoData = new();
|
||||
int osAdapterInfoDataSize = Marshal.SizeOf(osAdapterInfoData);
|
||||
IntPtr AdapterBuffer = Marshal.AllocCoTaskMem(osAdapterInfoDataSize);
|
||||
Marshal.StructureToPtr(osAdapterInfoData, AdapterBuffer, false);
|
||||
if (Adl2.NativeMethods.ADL2_Adapter_AdapterInfo_Get(_adlContextHandle, AdapterBuffer, osAdapterInfoDataSize) != Adl2.ADL_SUCCESS)
|
||||
return;
|
||||
if (internalDiscreteAdapter is not null)
|
||||
{
|
||||
_internalDiscreteAdapter = (ADLAdapterInfo)internalDiscreteAdapter;
|
||||
_isReady = true;
|
||||
}
|
||||
|
||||
osAdapterInfoData = (ADLAdapterInfoArray) Marshal.PtrToStructure(AdapterBuffer, osAdapterInfoData.GetType())!;
|
||||
|
||||
const int amdVendorId = 1002;
|
||||
|
||||
// Determine which GPU is internal discrete AMD GPU
|
||||
ADLAdapterInfo internalDiscreteAdapter =
|
||||
osAdapterInfoData.ADLAdapterInfo
|
||||
.FirstOrDefault(adapter => {
|
||||
if (adapter.Exist == 0 || adapter.Present == 0)
|
||||
return false;
|
||||
|
||||
if (adapter.VendorID != amdVendorId)
|
||||
return false;
|
||||
|
||||
if (Adl2.NativeMethods.ADL2_Adapter_ASICFamilyType_Get(_adlContextHandle, adapter.AdapterIndex, out ADLAsicFamilyType asicFamilyType, out int asicFamilyTypeValids) != Adl2.ADL_SUCCESS)
|
||||
return false;
|
||||
|
||||
asicFamilyType = (ADLAsicFamilyType) ((int) asicFamilyType & asicFamilyTypeValids);
|
||||
|
||||
// FIXME: is this correct for G14 2022?
|
||||
return (asicFamilyType & ADLAsicFamilyType.Discrete) != 0;
|
||||
});
|
||||
|
||||
if (internalDiscreteAdapter.Exist == 0)
|
||||
return;
|
||||
|
||||
_internalDiscreteAdapter = internalDiscreteAdapter;
|
||||
_isReady = true;
|
||||
}
|
||||
|
||||
public bool IsValid => _isReady && _adlContextHandle != IntPtr.Zero;
|
||||
|
||||
public int? GetCurrentTemperature() {
|
||||
public int? GetCurrentTemperature()
|
||||
{
|
||||
if (!IsValid)
|
||||
return null;
|
||||
|
||||
if (Adl2.NativeMethods.ADL2_New_QueryPMLogData_Get(_adlContextHandle, _internalDiscreteAdapter.AdapterIndex, out ADLPMLogDataOutput adlpmLogDataOutput) != Adl2.ADL_SUCCESS)
|
||||
|
||||
if (ADL2_New_QueryPMLogData_Get(_adlContextHandle, _internalDiscreteAdapter.AdapterIndex, out ADLPMLogDataOutput adlpmLogDataOutput) != Adl2.ADL_SUCCESS)
|
||||
return null;
|
||||
|
||||
ADLSingleSensorData temperatureSensor = adlpmLogDataOutput.Sensors[(int) ADLSensorType.PMLOG_TEMPERATURE_EDGE];
|
||||
|
||||
ADLSingleSensorData temperatureSensor = adlpmLogDataOutput.Sensors[(int)ADLSensorType.PMLOG_TEMPERATURE_EDGE];
|
||||
if (temperatureSensor.Supported == 0)
|
||||
return null;
|
||||
|
||||
@@ -79,10 +96,9 @@ public class AmdGpuControl : IGpuControl {
|
||||
|
||||
public int? GetGpuUse()
|
||||
{
|
||||
if (!IsValid)
|
||||
return null;
|
||||
if (!IsValid) return null;
|
||||
|
||||
if (Adl2.NativeMethods.ADL2_New_QueryPMLogData_Get(_adlContextHandle, _internalDiscreteAdapter.AdapterIndex, out ADLPMLogDataOutput adlpmLogDataOutput) != Adl2.ADL_SUCCESS)
|
||||
if (ADL2_New_QueryPMLogData_Get(_adlContextHandle, _internalDiscreteAdapter.AdapterIndex, out ADLPMLogDataOutput adlpmLogDataOutput) != Adl2.ADL_SUCCESS)
|
||||
return null;
|
||||
|
||||
ADLSingleSensorData gpuUsage = adlpmLogDataOutput.Sensors[(int)ADLSensorType.PMLOG_INFO_ACTIVITY_GFX];
|
||||
@@ -94,20 +110,125 @@ public class AmdGpuControl : IGpuControl {
|
||||
}
|
||||
|
||||
|
||||
private void ReleaseUnmanagedResources() {
|
||||
if (_adlContextHandle != IntPtr.Zero) {
|
||||
Adl2.NativeMethods.ADL2_Main_Control_Destroy(_adlContextHandle);
|
||||
public bool SetVariBright(int enabled)
|
||||
{
|
||||
if (_adlContextHandle == IntPtr.Zero) return false;
|
||||
|
||||
ADLAdapterInfo? iGPU = FindByType(ADLAsicFamilyType.Integrated);
|
||||
if (iGPU is null) return false;
|
||||
|
||||
return ADL2_Adapter_VariBrightEnable_Set(_adlContextHandle, ((ADLAdapterInfo)iGPU).AdapterIndex, enabled) == Adl2.ADL_SUCCESS;
|
||||
|
||||
}
|
||||
|
||||
public bool GetVariBright(out int supported, out int enabled)
|
||||
{
|
||||
supported = enabled = -1;
|
||||
|
||||
if (_adlContextHandle == IntPtr.Zero) return false;
|
||||
|
||||
ADLAdapterInfo? iGPU = FindByType(ADLAsicFamilyType.Integrated);
|
||||
if (iGPU is null) return false;
|
||||
|
||||
if (ADL2_Adapter_VariBright_Caps(_adlContextHandle, ((ADLAdapterInfo)iGPU).AdapterIndex, out int supportedOut, out int enabledOut, out int version) != Adl2.ADL_SUCCESS)
|
||||
return false;
|
||||
|
||||
supported = supportedOut;
|
||||
enabled = enabledOut;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public ADLODNPerformanceLevels? GetGPUClocks()
|
||||
{
|
||||
if (!IsValid) return null;
|
||||
|
||||
ADLODNPerformanceLevels performanceLevels = new();
|
||||
ADL2_OverdriveN_SystemClocks_Get(_adlContextHandle, _internalDiscreteAdapter.AdapterIndex, ref performanceLevels);
|
||||
|
||||
return performanceLevels;
|
||||
}
|
||||
|
||||
public void KillGPUApps()
|
||||
{
|
||||
|
||||
if (!IsValid) return;
|
||||
|
||||
IntPtr appInfoPtr = IntPtr.Zero;
|
||||
int appCount = 0;
|
||||
|
||||
try
|
||||
{
|
||||
// Get switchable graphics applications information
|
||||
var result = ADL2_SwitchableGraphics_Applications_Get(_adlContextHandle, 2, out appCount, out appInfoPtr);
|
||||
if (result != 0)
|
||||
{
|
||||
throw new Exception("Failed to get switchable graphics applications. Error code: " + result);
|
||||
}
|
||||
|
||||
// Convert the application data pointers to an array of structs
|
||||
var appInfoArray = new ADLSGApplicationInfo[appCount];
|
||||
IntPtr currentPtr = appInfoPtr;
|
||||
|
||||
for (int i = 0; i < appCount; i++)
|
||||
{
|
||||
appInfoArray[i] = Marshal.PtrToStructure<ADLSGApplicationInfo>(currentPtr);
|
||||
currentPtr = IntPtr.Add(currentPtr, Marshal.SizeOf<ADLSGApplicationInfo>());
|
||||
}
|
||||
|
||||
var appNames = new List<string>();
|
||||
|
||||
for (int i = 0; i < appCount; i++)
|
||||
{
|
||||
if (appInfoArray[i].iGPUAffinity == 1)
|
||||
{
|
||||
Logger.WriteLine(appInfoArray[i].strFileName + ":" + appInfoArray[i].iGPUAffinity + "(" + appInfoArray[i].timeStamp + ")");
|
||||
appNames.Add(Path.GetFileNameWithoutExtension(appInfoArray[i].strFileName));
|
||||
}
|
||||
}
|
||||
|
||||
List<string> immune = new() { "svchost", "system", "ntoskrnl", "csrss", "winlogon", "wininit", "smss" };
|
||||
|
||||
foreach (string kill in appNames)
|
||||
if (!immune.Contains(kill.ToLower()))
|
||||
ProcessHelper.KillByName(kill);
|
||||
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
// Clean up resources
|
||||
if (appInfoPtr != IntPtr.Zero)
|
||||
{
|
||||
Marshal.FreeCoTaskMem(appInfoPtr);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void ReleaseUnmanagedResources()
|
||||
{
|
||||
if (_adlContextHandle != IntPtr.Zero)
|
||||
{
|
||||
ADL2_Main_Control_Destroy(_adlContextHandle);
|
||||
_adlContextHandle = IntPtr.Zero;
|
||||
_isReady = false;
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose() {
|
||||
public void Dispose()
|
||||
{
|
||||
ReleaseUnmanagedResources();
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
~AmdGpuControl() {
|
||||
~AmdGpuControl()
|
||||
{
|
||||
ReleaseUnmanagedResources();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,4 +6,6 @@ public interface IGpuControl : IDisposable {
|
||||
public string FullName { get; }
|
||||
int? GetCurrentTemperature();
|
||||
int? GetGpuUse();
|
||||
void KillGPUApps();
|
||||
|
||||
}
|
||||
|
||||
@@ -55,26 +55,13 @@ public class NvidiaGpuControl : IGpuControl
|
||||
try
|
||||
{
|
||||
Process[] processes = internalGpu.GetActiveApplications();
|
||||
foreach (Process process in processes)
|
||||
{
|
||||
try
|
||||
{
|
||||
process?.Kill();
|
||||
Logger.WriteLine("Stopped: " + process.ProcessName);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine(ex.Message);
|
||||
}
|
||||
}
|
||||
foreach (Process process in processes) ProcessHelper.KillByProcess(process);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine(ex.Message);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//NVIDIA.RestartDisplayDriver();
|
||||
}
|
||||
|
||||
@@ -104,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()
|
||||
{
|
||||
@@ -148,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;
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ public static class HardwareControl
|
||||
{
|
||||
AppConfig.setConfig("fan_max", fan);
|
||||
}
|
||||
private static string FormatFan(int fan)
|
||||
public static string FormatFan(int fan)
|
||||
{
|
||||
// fix for old models
|
||||
if (fan < 0)
|
||||
@@ -187,7 +187,7 @@ public static class HardwareControl
|
||||
public static void KillGPUApps()
|
||||
{
|
||||
|
||||
List<string> tokill = new() { "EADesktop", "RadeonSoftware", "epicgameslauncher" };
|
||||
List<string> tokill = new() { "EADesktop", "RadeonSoftware", "epicgameslauncher", "ASUSSmartDisplayControl" };
|
||||
|
||||
if (AppConfig.isConfig("kill_gpu_apps"))
|
||||
{
|
||||
@@ -196,24 +196,11 @@ public static class HardwareControl
|
||||
tokill.Add("nvcplui");
|
||||
}
|
||||
|
||||
foreach (string kill in tokill)
|
||||
foreach (var process in Process.GetProcessesByName(kill))
|
||||
{
|
||||
try
|
||||
{
|
||||
process.Kill();
|
||||
Logger.WriteLine($"Stopped: {process.ProcessName}");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine($"Failed to stop: {process.ProcessName} {ex.Message}");
|
||||
}
|
||||
}
|
||||
foreach (string kill in tokill) ProcessHelper.KillByName(kill);
|
||||
|
||||
if (AppConfig.isConfig("kill_gpu_apps") && GpuControl is not null && GpuControl.IsNvidia)
|
||||
if (AppConfig.isConfig("kill_gpu_apps") && GpuControl is not null)
|
||||
{
|
||||
NvidiaGpuControl nvControl = (NvidiaGpuControl)GpuControl;
|
||||
nvControl.KillGPUApps();
|
||||
GpuControl.KillGPUApps();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -101,7 +101,7 @@ namespace GHelper
|
||||
if (!backlightActivity && iddle.TotalSeconds < kb_timeout)
|
||||
{
|
||||
backlightActivity = true;
|
||||
SetBacklight();
|
||||
SetBacklightAuto();
|
||||
}
|
||||
|
||||
//Debug.WriteLine(iddle.TotalSeconds);
|
||||
@@ -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;
|
||||
@@ -369,7 +375,7 @@ namespace GHelper
|
||||
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, "Fn-Lock "+(fnLock==1?"On":"Off"), ToastIcon.FnLock);
|
||||
}
|
||||
|
||||
static void TabletMode()
|
||||
public static void TabletMode()
|
||||
{
|
||||
bool touchpadState = GetTouchpadState();
|
||||
bool tabletState = Program.acpi.DeviceGet(AsusACPI.TabletState) > 0;
|
||||
@@ -412,7 +418,7 @@ namespace GHelper
|
||||
}
|
||||
|
||||
|
||||
public static int GetBacklight(bool auto = false)
|
||||
public static int GetBacklight()
|
||||
{
|
||||
int backlight_power = AppConfig.getConfig("keyboard_brightness", 1);
|
||||
int backlight_battery = AppConfig.getConfig("keyboard_brightness_ac", 1);
|
||||
@@ -420,18 +426,17 @@ namespace GHelper
|
||||
|
||||
int backlight;
|
||||
|
||||
if (auto)
|
||||
backlight = onBattery ? Math.Min(backlight_battery, backlight_power) : Math.Max(backlight_battery, backlight_power);
|
||||
else
|
||||
backlight = onBattery ? backlight_battery : backlight_power;
|
||||
//backlight = onBattery ? Math.Min(backlight_battery, backlight_power) : Math.Max(backlight_battery, backlight_power);
|
||||
backlight = onBattery ? backlight_battery : backlight_power;
|
||||
|
||||
return Math.Max(Math.Min(3, backlight), 0);
|
||||
}
|
||||
|
||||
public static void SetBacklight(bool auto = false)
|
||||
public static void SetBacklightAuto(bool init = false)
|
||||
{
|
||||
if (auto) AsusUSB.Init();
|
||||
AsusUSB.ApplyBrightness(GetBacklight(auto), "Auto");
|
||||
if (init) AsusUSB.Init();
|
||||
|
||||
if (!OptimizationService.IsRunning()) AsusUSB.ApplyBrightness(GetBacklight(), "Auto");
|
||||
}
|
||||
|
||||
public static void SetBacklight(int delta)
|
||||
|
||||
@@ -30,7 +30,7 @@ public static class Logger
|
||||
try
|
||||
{
|
||||
var file = File.ReadAllLines(logFile);
|
||||
int skip = Math.Max(0, file.Count() - 500);
|
||||
int skip = Math.Max(0, file.Count() - 1000);
|
||||
File.WriteAllLines(logFile, file.Skip(skip).ToArray());
|
||||
}
|
||||
catch { }
|
||||
|
||||
@@ -327,6 +327,8 @@ public class NativeMethods
|
||||
|
||||
}
|
||||
|
||||
[DllImport("User32.dll")]
|
||||
public static extern bool SetForegroundWindow(IntPtr handle);
|
||||
|
||||
private const int WM_SYSCOMMAND = 0x0112;
|
||||
private const int SC_MONITORPOWER = 0xF170;
|
||||
@@ -478,6 +480,17 @@ public class NativeMethods
|
||||
);
|
||||
|
||||
|
||||
[DllImport("powrprof.dll")]
|
||||
static extern uint PowerReadACValue(
|
||||
IntPtr RootPowerKey,
|
||||
Guid SchemeGuid,
|
||||
Guid SubGroupOfPowerSettingGuid,
|
||||
Guid PowerSettingGuid,
|
||||
ref int Type,
|
||||
ref IntPtr Buffer,
|
||||
ref uint BufferSize
|
||||
);
|
||||
|
||||
|
||||
[DllImport("PowrProf.dll", CharSet = CharSet.Unicode)]
|
||||
static extern UInt32 PowerSetActiveScheme(IntPtr RootPowerKey,
|
||||
@@ -489,6 +502,9 @@ public class NativeMethods
|
||||
static readonly Guid GUID_CPU = new Guid("54533251-82be-4824-96c1-47b60b740d00");
|
||||
static readonly Guid GUID_BOOST = new Guid("be337238-0d82-4146-a960-4f3749d470c7");
|
||||
|
||||
private static Guid GUID_SLEEP_SUBGROUP = new Guid("238c9fa8-0aad-41ed-83f4-97be242c8f20");
|
||||
private static Guid GUID_HIBERNATEIDLE = new Guid("9d7815a6-7ee4-497e-8888-515a05f02364");
|
||||
|
||||
[DllImportAttribute("powrprof.dll", EntryPoint = "PowerGetActualOverlayScheme")]
|
||||
public static extern uint PowerGetActualOverlayScheme(out Guid ActualOverlayGuid);
|
||||
|
||||
@@ -572,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";
|
||||
|
||||
@@ -584,16 +636,19 @@ public class NativeMethods
|
||||
var devices = GetAllDevices().ToArray();
|
||||
int count = 0, displayNum = -1;
|
||||
|
||||
string internalName = AppConfig.getConfigString("internal_display");
|
||||
|
||||
foreach (var device in devices)
|
||||
{
|
||||
if (device.outputTechnology == DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL ||
|
||||
device.outputTechnology == DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED)
|
||||
device.outputTechnology == DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED ||
|
||||
device.monitorFriendlyDeviceName == internalName)
|
||||
{
|
||||
displayNum = count;
|
||||
AppConfig.setConfig("internal_display", device.monitorFriendlyDeviceName);
|
||||
}
|
||||
count++;
|
||||
//Logger.WriteLine(device.outputTechnology.ToString());
|
||||
//Logger.WriteLine(device.monitorFriendlyDeviceName);
|
||||
//Logger.WriteLine(device.monitorFriendlyDeviceName + ":" + device.outputTechnology.ToString());
|
||||
}
|
||||
|
||||
var screens = Screen.AllScreens;
|
||||
@@ -676,6 +731,20 @@ public class NativeMethods
|
||||
|
||||
}
|
||||
|
||||
public static nint GetHuibernateAfter()
|
||||
{
|
||||
Guid activePolicyGuid = GetActiveScheme();
|
||||
var type = 0;
|
||||
nint value = 0;
|
||||
var valueSize = 4u;
|
||||
|
||||
PowerReadACValue(IntPtr.Zero, activePolicyGuid,
|
||||
GUID_SLEEP_SUBGROUP, GUID_HIBERNATEIDLE,
|
||||
ref type, ref value, ref valueSize);
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
static Guid GetActiveScheme()
|
||||
{
|
||||
IntPtr pActiveSchemeGuid;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
139
app/ProcessHelper.cs
Normal file
139
app/ProcessHelper.cs
Normal file
@@ -0,0 +1,139 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Security.Principal;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace GHelper
|
||||
{
|
||||
public static class ProcessHelper
|
||||
{
|
||||
private static long lastAdmin;
|
||||
|
||||
public static void CheckAlreadyRunning()
|
||||
{
|
||||
Process currentProcess = Process.GetCurrentProcess();
|
||||
Process[] processes = Process.GetProcessesByName(currentProcess.ProcessName);
|
||||
|
||||
if (processes.Length > 1)
|
||||
{
|
||||
foreach (Process process in processes)
|
||||
if (process.Id != currentProcess.Id)
|
||||
try
|
||||
{
|
||||
process.Kill();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine(ex.ToString());
|
||||
MessageBox.Show(Properties.Strings.AppAlreadyRunningText, Properties.Strings.AppAlreadyRunning, MessageBoxButtons.OK);
|
||||
Application.Exit();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsUserAdministrator()
|
||||
{
|
||||
WindowsIdentity identity = WindowsIdentity.GetCurrent();
|
||||
WindowsPrincipal principal = new WindowsPrincipal(identity);
|
||||
return principal.IsInRole(WindowsBuiltInRole.Administrator);
|
||||
}
|
||||
|
||||
public static void RunAsAdmin(string? param = null)
|
||||
{
|
||||
|
||||
if (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastAdmin) < 2000) return;
|
||||
lastAdmin = DateTimeOffset.Now.ToUnixTimeMilliseconds();
|
||||
|
||||
// Check if the current user is an administrator
|
||||
if (!IsUserAdministrator())
|
||||
{
|
||||
ProcessStartInfo startInfo = new ProcessStartInfo();
|
||||
startInfo.UseShellExecute = true;
|
||||
startInfo.WorkingDirectory = Environment.CurrentDirectory;
|
||||
startInfo.FileName = Application.ExecutablePath;
|
||||
startInfo.Arguments = param;
|
||||
startInfo.Verb = "runas";
|
||||
Process.Start(startInfo);
|
||||
Application.Exit();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void KillByName(string name)
|
||||
{
|
||||
foreach (var process in Process.GetProcessesByName(name))
|
||||
{
|
||||
try
|
||||
{
|
||||
process.Kill();
|
||||
Logger.WriteLine($"Stopped: {process.ProcessName}");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine($"Failed to stop: {process.ProcessName} {ex.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void KillByProcess(Process process)
|
||||
{
|
||||
try
|
||||
{
|
||||
process.Kill();
|
||||
Logger.WriteLine($"Stopped: {process.ProcessName}");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine($"Failed to stop: {process.ProcessName} {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -25,7 +26,6 @@ namespace GHelper
|
||||
|
||||
private static long lastAuto;
|
||||
private static long lastTheme;
|
||||
private static long lastAdmin;
|
||||
|
||||
public static InputDispatcher inputDispatcher;
|
||||
|
||||
@@ -48,7 +48,7 @@ namespace GHelper
|
||||
Debug.WriteLine(CultureInfo.CurrentUICulture);
|
||||
//Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("fr");
|
||||
|
||||
CheckProcesses();
|
||||
ProcessHelper.CheckAlreadyRunning();
|
||||
|
||||
try
|
||||
{
|
||||
@@ -67,7 +67,7 @@ namespace GHelper
|
||||
}
|
||||
|
||||
Logger.WriteLine("------------");
|
||||
Logger.WriteLine("App launched: " + AppConfig.GetModel() + " :" + Assembly.GetExecutingAssembly().GetName().Version.ToString() + CultureInfo.CurrentUICulture + (IsUserAdministrator() ? "." : ""));
|
||||
Logger.WriteLine("App launched: " + AppConfig.GetModel() + " :" + Assembly.GetExecutingAssembly().GetName().Version.ToString() + CultureInfo.CurrentUICulture + (ProcessHelper.IsUserAdministrator() ? "." : ""));
|
||||
|
||||
Application.EnableVisualStyles();
|
||||
|
||||
@@ -100,8 +100,6 @@ namespace GHelper
|
||||
SettingsToggle(action);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Application.Run();
|
||||
|
||||
}
|
||||
@@ -129,13 +127,16 @@ namespace GHelper
|
||||
if (settingsForm.keyb is not null && settingsForm.keyb.Text != "")
|
||||
settingsForm.keyb.InitTheme();
|
||||
|
||||
if (settingsForm.updates is not null && settingsForm.updates.Text != "")
|
||||
settingsForm.updates.InitTheme();
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
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,19 +164,16 @@ 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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static void SettingsToggle(string action = "")
|
||||
{
|
||||
if (settingsForm.Visible)
|
||||
settingsForm.Hide();
|
||||
if (settingsForm.Visible) settingsForm.HideAll();
|
||||
else
|
||||
{
|
||||
settingsForm.Show();
|
||||
@@ -191,6 +189,11 @@ namespace GHelper
|
||||
case "gpurestart":
|
||||
settingsForm.RestartGPU(false);
|
||||
break;
|
||||
case "services":
|
||||
settingsForm.keyb = new Extra();
|
||||
settingsForm.keyb.Show();
|
||||
settingsForm.keyb.ServiesToggle();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -214,55 +217,6 @@ namespace GHelper
|
||||
}
|
||||
|
||||
|
||||
static void CheckProcesses()
|
||||
{
|
||||
Process currentProcess = Process.GetCurrentProcess();
|
||||
Process[] processes = Process.GetProcessesByName(currentProcess.ProcessName);
|
||||
|
||||
if (processes.Length > 1)
|
||||
{
|
||||
foreach (Process process in processes)
|
||||
if (process.Id != currentProcess.Id)
|
||||
try
|
||||
{
|
||||
process.Kill();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine(ex.ToString());
|
||||
MessageBox.Show(Properties.Strings.AppAlreadyRunningText, Properties.Strings.AppAlreadyRunning, MessageBoxButtons.OK);
|
||||
Application.Exit();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsUserAdministrator()
|
||||
{
|
||||
WindowsIdentity identity = WindowsIdentity.GetCurrent();
|
||||
WindowsPrincipal principal = new WindowsPrincipal(identity);
|
||||
return principal.IsInRole(WindowsBuiltInRole.Administrator);
|
||||
}
|
||||
|
||||
public static void RunAsAdmin(string? param = null)
|
||||
{
|
||||
|
||||
if (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastAdmin) < 2000) return;
|
||||
lastAdmin = DateTimeOffset.Now.ToUnixTimeMilliseconds();
|
||||
|
||||
// Check if the current user is an administrator
|
||||
if (!IsUserAdministrator())
|
||||
{
|
||||
ProcessStartInfo startInfo = new ProcessStartInfo();
|
||||
startInfo.UseShellExecute = true;
|
||||
startInfo.WorkingDirectory = Environment.CurrentDirectory;
|
||||
startInfo.FileName = Application.ExecutablePath;
|
||||
startInfo.Arguments = param;
|
||||
startInfo.Verb = "runas";
|
||||
Process.Start(startInfo);
|
||||
Application.Exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
30
app/Properties/Resources.Designer.cs
generated
30
app/Properties/Resources.Designer.cs
generated
@@ -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>
|
||||
@@ -350,6 +370,16 @@ namespace GHelper.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap icons8_software_48 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("icons8-software-48", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
|
||||
@@ -118,6 +118,9 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="brightness_up" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\brightness-up.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-leaf-96" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-leaf-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
@@ -133,11 +136,17 @@
|
||||
<data name="icons8-fiat-500-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-fiat-500-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_microphone_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-microphone-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-rocket-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-rocket-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-bicycle-48 (1)" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-bicycle-48 (1).png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-game-controller-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-game-controller-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<data name="icons8_touchpad_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-touchpad-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-fan-head-96" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-fan-head-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
@@ -145,8 +154,8 @@
|
||||
<data name="icons8-processor-96" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-processor-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-spa-flower-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-spa-flower-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<data name="icons8-game-controller-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-game-controller-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-spa-flower-96" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-spa-flower-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
@@ -157,9 +166,15 @@
|
||||
<data name="icons8-keyboard-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-keyboard-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="brightness_down" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\brightness-down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-fan-speed-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-fan-speed-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-help-64" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-help-64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-speed-96" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-speed-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
@@ -169,12 +184,24 @@
|
||||
<data name="icons8-laptop-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-laptop-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-project-management-48 (1)" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-project-management-48 (1).png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-video-card-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-video-card-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="backlight_up" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\backlight-up.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-spa-flower-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-spa-flower-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-organic-food-961" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-organic-food-961.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_function" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-function-mac-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-balance-symbol-96" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-balance-symbol-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
@@ -184,55 +211,37 @@
|
||||
<data name="icons8-matrix-desktop-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-matrix-desktop-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_mute_unmute_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-mute-unmute-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-xbox-controller-96" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-xbox-controller-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-project-management-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-project-management-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_video_48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-video-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-leaf-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-leaf-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="ultimate" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\ultimate.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-rocket-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-rocket-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<data name="backlight_down" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\backlight-down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-speed-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-speed-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8-help-64" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-help-64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<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_video_48" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-video-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<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-project-management-48 (1)" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-project-management-48 (1).png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_microphone_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-microphone-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_touchpad_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-touchpad-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="backlight_down" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\backlight-down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="backlight_up" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\backlight-up.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="brightness_down" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\brightness-down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="brightness_up" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\brightness-up.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_mute_unmute_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-mute-unmute-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_function" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-function-mac-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<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>
|
||||
90
app/Properties/Strings.Designer.cs
generated
90
app/Properties/Strings.Designer.cs
generated
@@ -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>
|
||||
@@ -312,6 +321,15 @@ namespace GHelper.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to BIOS and Driver Updates.
|
||||
/// </summary>
|
||||
internal static string BiosAndDriverUpdates {
|
||||
get {
|
||||
return ResourceManager.GetString("BiosAndDriverUpdates", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Boot.
|
||||
/// </summary>
|
||||
@@ -330,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>
|
||||
@@ -393,6 +429,15 @@ namespace GHelper.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Drivers and Software.
|
||||
/// </summary>
|
||||
internal static string DriverAndSoftware {
|
||||
get {
|
||||
return ResourceManager.GetString("DriverAndSoftware", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Disables dGPU for battery savings.
|
||||
/// </summary>
|
||||
@@ -1005,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>
|
||||
@@ -1014,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>
|
||||
@@ -1095,6 +1176,15 @@ namespace GHelper.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Updates.
|
||||
/// </summary>
|
||||
internal static string Updates {
|
||||
get {
|
||||
return ResourceManager.GetString("Updates", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Version.
|
||||
/// </summary>
|
||||
|
||||
@@ -190,7 +190,7 @@
|
||||
<value>Encendida</value>
|
||||
</data>
|
||||
<data name="BacklightTimeout" xml:space="preserve">
|
||||
<value>Apagar con batería tras (segundos)</value>
|
||||
<value>Apagar con batería tras (0 - nunca)</value>
|
||||
</data>
|
||||
<data name="BacklightTimeoutPlugged" xml:space="preserve">
|
||||
<value>Apagar cuando está enchufado tras (0 - nunca)</value>
|
||||
@@ -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>
|
||||
@@ -267,6 +279,9 @@
|
||||
<data name="FansPower" xml:space="preserve">
|
||||
<value>Ventiladores + Energía</value>
|
||||
</data>
|
||||
<data name="FnLock" xml:space="preserve">
|
||||
<value>Usar teclas de acceso rápido (Fn+F) sin pulsar Fn</value>
|
||||
</data>
|
||||
<data name="GPUBoost" xml:space="preserve">
|
||||
<value>Dynamic Boost</value>
|
||||
</data>
|
||||
@@ -435,6 +450,9 @@
|
||||
<data name="ToggleAura" xml:space="preserve">
|
||||
<value>Alternar Aura</value>
|
||||
</data>
|
||||
<data name="ToggleFnLock" xml:space="preserve">
|
||||
<value>Alternar Fn-Lock</value>
|
||||
</data>
|
||||
<data name="ToggleMiniled" xml:space="preserve">
|
||||
<value>Alternar Miniled (si comp.)</value>
|
||||
</data>
|
||||
@@ -456,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>
|
||||
|
||||
489
app/Properties/Strings.kr.resx
Normal file
489
app/Properties/Strings.kr.resx
Normal 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>
|
||||
@@ -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>
|
||||
@@ -201,12 +204,21 @@
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>Battery Charge Limit</value>
|
||||
</data>
|
||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>BIOS and Driver Updates</value>
|
||||
</data>
|
||||
<data name="Boot" xml:space="preserve">
|
||||
<value>Boot</value>
|
||||
</data>
|
||||
<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>
|
||||
@@ -228,6 +240,9 @@
|
||||
<data name="DownloadUpdate" xml:space="preserve">
|
||||
<value>Download Update</value>
|
||||
</data>
|
||||
<data name="DriverAndSoftware" xml:space="preserve">
|
||||
<value>Drivers and Software</value>
|
||||
</data>
|
||||
<data name="EcoGPUTooltip" xml:space="preserve">
|
||||
<value>Disables dGPU for battery savings</value>
|
||||
</data>
|
||||
@@ -432,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>
|
||||
@@ -462,6 +489,9 @@
|
||||
<data name="UltimateMode" xml:space="preserve">
|
||||
<value>Ultimate</value>
|
||||
</data>
|
||||
<data name="Updates" xml:space="preserve">
|
||||
<value>Updates</value>
|
||||
</data>
|
||||
<data name="VersionLabel" xml:space="preserve">
|
||||
<value>Version</value>
|
||||
</data>
|
||||
|
||||
@@ -154,7 +154,7 @@
|
||||
<value>Güç Sınırlarını Uygula</value>
|
||||
</data>
|
||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||
<value>Auto adjust Windows Power Mode</value>
|
||||
<value>Windows Güç Modunu otomatik ayarla</value>
|
||||
</data>
|
||||
<data name="AuraBreathe" xml:space="preserve">
|
||||
<value>Nefes</value>
|
||||
@@ -189,6 +189,12 @@
|
||||
<data name="Awake" xml:space="preserve">
|
||||
<value>Uyanık</value>
|
||||
</data>
|
||||
<data name="BacklightTimeout" xml:space="preserve">
|
||||
<value>Pildeyken klavye ışığının kapanma süresi</value>
|
||||
</data>
|
||||
<data name="BacklightTimeoutPlugged" xml:space="preserve">
|
||||
<value>Şarjdayken klavye ışığının kapanma süresi (0 her zaman açık)</value>
|
||||
</data>
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<value>Dengeli</value>
|
||||
</data>
|
||||
@@ -258,6 +264,9 @@
|
||||
<data name="FansPower" xml:space="preserve">
|
||||
<value>Fanlar + Güç</value>
|
||||
</data>
|
||||
<data name="FnLock" xml:space="preserve">
|
||||
<value>Fn+F kısayol tuşlarını FN tuşuna basmadan çalıştır</value>
|
||||
</data>
|
||||
<data name="GPUChanging" xml:space="preserve">
|
||||
<value>Değiştiriliyor</value>
|
||||
</data>
|
||||
@@ -282,6 +291,9 @@
|
||||
<data name="KeyboardAuto" xml:space="preserve">
|
||||
<value>Pille çalışırken klavye aydınlatmasını kıs, şarjdayken eski haline dön</value>
|
||||
</data>
|
||||
<data name="KillGpuApps" xml:space="preserve">
|
||||
<value>Eco'ya geçerken dGPU kullanan tüm uygulamaları durdur</value>
|
||||
</data>
|
||||
<data name="LaptopBacklight" xml:space="preserve">
|
||||
<value>Aydınlatması</value>
|
||||
</data>
|
||||
@@ -333,6 +345,9 @@
|
||||
<data name="OptimizedGPUTooltip" xml:space="preserve">
|
||||
<value>Pille çalışırken Eko moda ve şarjdayken Standart moda geçiş yapın</value>
|
||||
</data>
|
||||
<data name="OptimizedUSBC" xml:space="preserve">
|
||||
<value>Optimize edilmiş modda USB-c şarj cihazında GPU'yu devre dışı bırak</value>
|
||||
</data>
|
||||
<data name="Other" xml:space="preserve">
|
||||
<value>Diğer</value>
|
||||
</data>
|
||||
|
||||
@@ -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>
|
||||
@@ -264,6 +270,9 @@
|
||||
<data name="FansPower" xml:space="preserve">
|
||||
<value>Кулери та Потужність</value>
|
||||
</data>
|
||||
<data name="FnLock" xml:space="preserve">
|
||||
<value>Гарячі клавіші Fn+F працюють без натискання Fn</value>
|
||||
</data>
|
||||
<data name="GPUChanging" xml:space="preserve">
|
||||
<value>Зміна</value>
|
||||
</data>
|
||||
@@ -405,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>
|
||||
@@ -426,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>
|
||||
|
||||
@@ -265,7 +265,7 @@
|
||||
<value>风扇与电源设置</value>
|
||||
</data>
|
||||
<data name="FnLock" xml:space="preserve">
|
||||
<value>无需FN处理 Fn+F 热键</value>
|
||||
<value>打开FnLock (无需按下FN使用FN+(F1-F12)热键)</value>
|
||||
</data>
|
||||
<data name="GPUChanging" xml:space="preserve">
|
||||
<value>切换中...</value>
|
||||
@@ -292,7 +292,7 @@
|
||||
<value>电池模式下降低键盘亮度以省电,并在插上电源时恢复</value>
|
||||
</data>
|
||||
<data name="KillGpuApps" xml:space="preserve">
|
||||
<value>当切换到集显模式时,停止所有正在使用dGPU的应用</value>
|
||||
<value>当切换到集显模式时,停止所有正在使用独显的应用</value>
|
||||
</data>
|
||||
<data name="LaptopBacklight" xml:space="preserve">
|
||||
<value>背光</value>
|
||||
@@ -349,7 +349,7 @@
|
||||
<value>使用电池时切换到集显模式,并在插上电源后重新启用标准模式</value>
|
||||
</data>
|
||||
<data name="OptimizedUSBC" xml:space="preserve">
|
||||
<value>在自动切换模式下,使用USB-C充电器时禁用GPU</value>
|
||||
<value>在自动切换模式下,使用USB-C为笔记本供电时禁用GPU</value>
|
||||
</data>
|
||||
<data name="Other" xml:space="preserve">
|
||||
<value>其他</value>
|
||||
|
||||
@@ -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>
|
||||
BIN
app/Resources/icons8-bios-48.png
Normal file
BIN
app/Resources/icons8-bios-48.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 362 B |
BIN
app/Resources/icons8-charged-battery-96.png
Normal file
BIN
app/Resources/icons8-charged-battery-96.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 406 B |
BIN
app/Resources/icons8-electrical-96.png
Normal file
BIN
app/Resources/icons8-electrical-96.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1000 B |
BIN
app/Resources/icons8-software-48.png
Normal file
BIN
app/Resources/icons8-software-48.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 645 B |
664
app/Settings.Designer.cs
generated
664
app/Settings.Designer.cs
generated
File diff suppressed because it is too large
Load Diff
208
app/Settings.cs
208
app/Settings.cs
@@ -6,7 +6,6 @@ using System.Net;
|
||||
using System.Reflection;
|
||||
using System.Text.Json;
|
||||
using System.Timers;
|
||||
using Tools;
|
||||
|
||||
namespace GHelper
|
||||
{
|
||||
@@ -29,12 +28,15 @@ namespace GHelper
|
||||
public AniMatrix matrix;
|
||||
public Fans fans;
|
||||
public Extra keyb;
|
||||
public Updates updates;
|
||||
|
||||
static long lastRefresh;
|
||||
|
||||
private bool customFans = false;
|
||||
private int customPower = 0;
|
||||
|
||||
bool isGpuSection = true;
|
||||
|
||||
public SettingsForm()
|
||||
{
|
||||
|
||||
@@ -70,6 +72,7 @@ namespace GHelper
|
||||
|
||||
buttonMatrix.Text = Properties.Strings.PictureGif;
|
||||
buttonQuit.Text = Properties.Strings.Quit;
|
||||
buttonUpdates.Text = Properties.Strings.Updates;
|
||||
|
||||
FormClosing += SettingsForm_FormClosing;
|
||||
|
||||
@@ -156,6 +159,8 @@ namespace GHelper
|
||||
button120Hz.MouseMove += Button120Hz_MouseHover;
|
||||
button120Hz.MouseLeave += ButtonScreen_MouseLeave;
|
||||
|
||||
buttonUpdates.Click += ButtonUpdates_Click;
|
||||
|
||||
sliderBattery.ValueChanged += SliderBattery_ValueChanged;
|
||||
Program.trayIcon.MouseMove += TrayIcon_MouseMove;
|
||||
|
||||
@@ -169,9 +174,9 @@ namespace GHelper
|
||||
int trim = model.LastIndexOf("_");
|
||||
if (trim > 0) model = model.Substring(0, trim);
|
||||
|
||||
labelModel.Text = model + (Program.IsUserAdministrator() ? "." : "");
|
||||
labelModel.Text = model + (ProcessHelper.IsUserAdministrator() ? "." : "");
|
||||
|
||||
TopMost = AppConfig.getConfig("topmost") == 1;
|
||||
TopMost = AppConfig.isConfig("topmost");
|
||||
|
||||
SetContextMenu();
|
||||
|
||||
@@ -181,13 +186,19 @@ namespace GHelper
|
||||
CheckForUpdatesAsync();
|
||||
});
|
||||
|
||||
Activated += SettingsForm_Activated;
|
||||
|
||||
}
|
||||
|
||||
private void SettingsForm_Activated(object? sender, EventArgs e)
|
||||
private void ButtonUpdates_Click(object? sender, EventArgs e)
|
||||
{
|
||||
if (fans != null && fans.Text != "") fans.BringToFront();
|
||||
if (updates == null || updates.Text == "")
|
||||
{
|
||||
updates = new Updates();
|
||||
updates.Show();
|
||||
}
|
||||
else
|
||||
{
|
||||
updates.Close();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void WndProc(ref Message m)
|
||||
@@ -236,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);
|
||||
@@ -248,47 +260,53 @@ 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("-");
|
||||
|
||||
var titleGPU = new ToolStripMenuItem(Properties.Strings.GPUMode);
|
||||
titleGPU.Margin = padding;
|
||||
titleGPU.Enabled = false;
|
||||
contextMenuStrip.Items.Add(titleGPU);
|
||||
if (isGpuSection)
|
||||
{
|
||||
var titleGPU = new ToolStripMenuItem(Properties.Strings.GPUMode);
|
||||
titleGPU.Margin = padding;
|
||||
titleGPU.Enabled = false;
|
||||
contextMenuStrip.Items.Add(titleGPU);
|
||||
|
||||
menuEco = new ToolStripMenuItem(Properties.Strings.EcoMode);
|
||||
menuEco.Click += ButtonEco_Click;
|
||||
menuEco.Margin = padding;
|
||||
contextMenuStrip.Items.Add(menuEco);
|
||||
menuEco = new ToolStripMenuItem(Properties.Strings.EcoMode);
|
||||
menuEco.Click += ButtonEco_Click;
|
||||
menuEco.Margin = padding;
|
||||
contextMenuStrip.Items.Add(menuEco);
|
||||
|
||||
menuStandard = new ToolStripMenuItem(Properties.Strings.StandardMode);
|
||||
menuStandard.Click += ButtonStandard_Click;
|
||||
menuStandard.Margin = padding;
|
||||
contextMenuStrip.Items.Add(menuStandard);
|
||||
menuStandard = new ToolStripMenuItem(Properties.Strings.StandardMode);
|
||||
menuStandard.Click += ButtonStandard_Click;
|
||||
menuStandard.Margin = padding;
|
||||
contextMenuStrip.Items.Add(menuStandard);
|
||||
|
||||
menuUltimate = new ToolStripMenuItem(Properties.Strings.UltimateMode);
|
||||
menuUltimate.Click += ButtonUltimate_Click;
|
||||
menuUltimate.Margin = padding;
|
||||
contextMenuStrip.Items.Add(menuUltimate);
|
||||
menuUltimate = new ToolStripMenuItem(Properties.Strings.UltimateMode);
|
||||
menuUltimate.Click += ButtonUltimate_Click;
|
||||
menuUltimate.Margin = padding;
|
||||
contextMenuStrip.Items.Add(menuUltimate);
|
||||
|
||||
menuOptimized = new ToolStripMenuItem(Properties.Strings.Optimized);
|
||||
menuOptimized.Click += ButtonOptimized_Click;
|
||||
menuOptimized.Margin = padding;
|
||||
contextMenuStrip.Items.Add(menuOptimized);
|
||||
menuOptimized = new ToolStripMenuItem(Properties.Strings.Optimized);
|
||||
menuOptimized.Click += ButtonOptimized_Click;
|
||||
menuOptimized.Margin = padding;
|
||||
contextMenuStrip.Items.Add(menuOptimized);
|
||||
|
||||
contextMenuStrip.Items.Add("-");
|
||||
}
|
||||
|
||||
contextMenuStrip.Items.Add("-");
|
||||
|
||||
var quit = new ToolStripMenuItem(Properties.Strings.Quit);
|
||||
quit.Click += ButtonQuit_Click;
|
||||
@@ -336,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));
|
||||
}
|
||||
|
||||
@@ -374,7 +394,8 @@ namespace GHelper
|
||||
|
||||
string url = null;
|
||||
|
||||
for (int i = 0; i < assets.GetArrayLength(); i++) {
|
||||
for (int i = 0; i < assets.GetArrayLength(); i++)
|
||||
{
|
||||
if (assets[i].GetProperty("browser_download_url").ToString().Contains(".zip"))
|
||||
url = assets[i].GetProperty("browser_download_url").ToString();
|
||||
}
|
||||
@@ -912,12 +933,23 @@ namespace GHelper
|
||||
Application.Exit();
|
||||
}
|
||||
|
||||
public void HideAll()
|
||||
{
|
||||
this.Hide();
|
||||
if (fans != null && fans.Text != "") fans.Close();
|
||||
if (keyb != null && keyb.Text != "") keyb.Close();
|
||||
}
|
||||
|
||||
public void CloseOthers()
|
||||
{
|
||||
}
|
||||
|
||||
private void SettingsForm_FormClosing(object? sender, FormClosingEventArgs e)
|
||||
{
|
||||
if (e.CloseReason == CloseReason.UserClosing)
|
||||
{
|
||||
e.Cancel = true;
|
||||
Hide();
|
||||
HideAll();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1070,7 +1102,7 @@ namespace GHelper
|
||||
}
|
||||
|
||||
int setStatus = nvControl.SetClocks(gpu_core, gpu_memory);
|
||||
if (launchAsAdmin && setStatus == -1) Program.RunAsAdmin("gpu");
|
||||
if (launchAsAdmin && setStatus == -1) ProcessHelper.RunAsAdmin("gpu");
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -1112,7 +1144,7 @@ namespace GHelper
|
||||
{
|
||||
customFans = false;
|
||||
|
||||
if (AppConfig.getConfigPerf("auto_apply") == 1 || force)
|
||||
if (AppConfig.isConfigPerf("auto_apply") || force)
|
||||
{
|
||||
|
||||
bool xgmFan = false;
|
||||
@@ -1135,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
|
||||
@@ -1144,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 () =>
|
||||
{
|
||||
@@ -1161,20 +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)
|
||||
{
|
||||
// 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)
|
||||
{
|
||||
@@ -1200,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
|
||||
{
|
||||
@@ -1295,16 +1357,18 @@ namespace GHelper
|
||||
|
||||
public void AutoKeyboard()
|
||||
{
|
||||
InputDispatcher.SetBacklight(true);
|
||||
InputDispatcher.SetBacklightAuto(true);
|
||||
if (AppConfig.ContainsModel("X16") || AppConfig.ContainsModel("X13")) InputDispatcher.TabletMode();
|
||||
|
||||
}
|
||||
|
||||
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"));
|
||||
}
|
||||
@@ -1461,10 +1525,11 @@ namespace GHelper
|
||||
|
||||
UltimateUI(mux == 1);
|
||||
|
||||
if (eco < 0)
|
||||
if (eco < 0 && mux < 0)
|
||||
{
|
||||
tableGPU.Visible = false;
|
||||
if (Program.acpi.DeviceGet(AsusACPI.GPU_Fan) < 0) panelGPU.Visible = false;
|
||||
isGpuSection = tableGPU.Visible = false;
|
||||
SetContextMenu();
|
||||
if (HardwareControl.FormatFan(Program.acpi.DeviceGet(AsusACPI.GPU_Fan)) is null) panelGPU.Visible = false;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1495,9 +1560,9 @@ namespace GHelper
|
||||
if (dialogResult == DialogResult.No) return;
|
||||
}
|
||||
|
||||
Program.RunAsAdmin("gpurestart");
|
||||
ProcessHelper.RunAsAdmin("gpurestart");
|
||||
|
||||
if (!Program.IsUserAdministrator()) return;
|
||||
if (!ProcessHelper.IsUserAdministrator()) return;
|
||||
|
||||
Logger.WriteLine("Trying to restart dGPU");
|
||||
|
||||
@@ -1669,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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -16,7 +16,7 @@ public class Startup
|
||||
|
||||
public static void ReScheduleAdmin()
|
||||
{
|
||||
if (Program.IsUserAdministrator() && IsScheduled())
|
||||
if (ProcessHelper.IsUserAdministrator() && IsScheduled())
|
||||
{
|
||||
UnSchedule();
|
||||
Schedule();
|
||||
@@ -38,7 +38,7 @@ public class Startup
|
||||
td.Triggers.Add(new LogonTrigger { UserId = userId });
|
||||
td.Actions.Add(strExeFilePath);
|
||||
|
||||
if (Program.IsUserAdministrator())
|
||||
if (ProcessHelper.IsUserAdministrator())
|
||||
td.Principal.RunLevel = TaskRunLevel.Highest;
|
||||
|
||||
td.Settings.StopIfGoingOnBatteries = false;
|
||||
@@ -54,10 +54,10 @@ public class Startup
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (Program.IsUserAdministrator())
|
||||
if (ProcessHelper.IsUserAdministrator())
|
||||
MessageBox.Show("Can't create a start up task. Try running Task Scheduler by hand and manually deleting GHelper task if it exists there.", "Scheduler Error", MessageBoxButtons.OK);
|
||||
else
|
||||
Program.RunAsAdmin();
|
||||
else
|
||||
ProcessHelper.RunAsAdmin();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,10 +73,10 @@ public class Startup
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (Program.IsUserAdministrator())
|
||||
if (ProcessHelper.IsUserAdministrator())
|
||||
MessageBox.Show("Can't remove task. Try running Task Scheduler by hand and manually deleting GHelper task if it exists there.", "Scheduler Error", MessageBoxButtons.OK);
|
||||
else
|
||||
Program.RunAsAdmin();
|
||||
ProcessHelper.RunAsAdmin();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
215
app/Updates.Designer.cs
generated
Normal file
215
app/Updates.Designer.cs
generated
Normal file
@@ -0,0 +1,215 @@
|
||||
namespace GHelper
|
||||
{
|
||||
partial class Updates
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Updates));
|
||||
tableBios = new TableLayoutPanel();
|
||||
labelBIOS = new Label();
|
||||
pictureBios = new PictureBox();
|
||||
panelBiosTitle = new Panel();
|
||||
panelBios = new Panel();
|
||||
panelDrivers = new Panel();
|
||||
tableDrivers = new TableLayoutPanel();
|
||||
panelDriversTitle = new Panel();
|
||||
labelDrivers = new Label();
|
||||
pictureDrivers = new PictureBox();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBios).BeginInit();
|
||||
panelBiosTitle.SuspendLayout();
|
||||
panelBios.SuspendLayout();
|
||||
panelDrivers.SuspendLayout();
|
||||
panelDriversTitle.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureDrivers).BeginInit();
|
||||
SuspendLayout();
|
||||
//
|
||||
// tableBios
|
||||
//
|
||||
tableBios.AutoSize = true;
|
||||
tableBios.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
tableBios.ColumnCount = 3;
|
||||
tableBios.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
|
||||
tableBios.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
|
||||
tableBios.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
|
||||
tableBios.Dock = DockStyle.Top;
|
||||
tableBios.Location = new Point(10, 10);
|
||||
tableBios.Margin = new Padding(2);
|
||||
tableBios.MinimumSize = new Size(550, 0);
|
||||
tableBios.Name = "tableBios";
|
||||
tableBios.Size = new Size(608, 0);
|
||||
tableBios.TabIndex = 0;
|
||||
//
|
||||
// labelBIOS
|
||||
//
|
||||
labelBIOS.AutoSize = true;
|
||||
labelBIOS.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
labelBIOS.Location = new Point(34, 14);
|
||||
labelBIOS.Margin = new Padding(2, 0, 2, 0);
|
||||
labelBIOS.Name = "labelBIOS";
|
||||
labelBIOS.Size = new Size(35, 15);
|
||||
labelBIOS.TabIndex = 1;
|
||||
labelBIOS.Text = "BIOS";
|
||||
//
|
||||
// pictureBios
|
||||
//
|
||||
pictureBios.BackgroundImage = (Image)resources.GetObject("pictureBios.BackgroundImage");
|
||||
pictureBios.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
pictureBios.Location = new Point(14, 14);
|
||||
pictureBios.Margin = new Padding(2);
|
||||
pictureBios.Name = "pictureBios";
|
||||
pictureBios.Size = new Size(16, 16);
|
||||
pictureBios.TabIndex = 2;
|
||||
pictureBios.TabStop = false;
|
||||
//
|
||||
// panelBiosTitle
|
||||
//
|
||||
panelBiosTitle.Controls.Add(labelBIOS);
|
||||
panelBiosTitle.Controls.Add(pictureBios);
|
||||
panelBiosTitle.Dock = DockStyle.Top;
|
||||
panelBiosTitle.Location = new Point(0, 0);
|
||||
panelBiosTitle.Margin = new Padding(2);
|
||||
panelBiosTitle.Name = "panelBiosTitle";
|
||||
panelBiosTitle.Size = new Size(628, 31);
|
||||
panelBiosTitle.TabIndex = 3;
|
||||
//
|
||||
// panelBios
|
||||
//
|
||||
panelBios.AutoSize = true;
|
||||
panelBios.Controls.Add(tableBios);
|
||||
panelBios.Dock = DockStyle.Top;
|
||||
panelBios.Location = new Point(0, 31);
|
||||
panelBios.Margin = new Padding(2);
|
||||
panelBios.Name = "panelBios";
|
||||
panelBios.Padding = new Padding(10);
|
||||
panelBios.Size = new Size(628, 20);
|
||||
panelBios.TabIndex = 4;
|
||||
//
|
||||
// panelDrivers
|
||||
//
|
||||
panelDrivers.AutoSize = true;
|
||||
panelDrivers.Controls.Add(tableDrivers);
|
||||
panelDrivers.Dock = DockStyle.Top;
|
||||
panelDrivers.Location = new Point(0, 73);
|
||||
panelDrivers.Margin = new Padding(2);
|
||||
panelDrivers.Name = "panelDrivers";
|
||||
panelDrivers.Padding = new Padding(10);
|
||||
panelDrivers.Size = new Size(628, 20);
|
||||
panelDrivers.TabIndex = 6;
|
||||
//
|
||||
// tableDrivers
|
||||
//
|
||||
tableDrivers.AutoSize = true;
|
||||
tableDrivers.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
||||
tableDrivers.ColumnCount = 3;
|
||||
tableDrivers.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
|
||||
tableDrivers.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
|
||||
tableDrivers.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
|
||||
tableDrivers.Dock = DockStyle.Top;
|
||||
tableDrivers.Location = new Point(10, 10);
|
||||
tableDrivers.Margin = new Padding(2);
|
||||
tableDrivers.MinimumSize = new Size(550, 0);
|
||||
tableDrivers.Name = "tableDrivers";
|
||||
tableDrivers.Size = new Size(608, 0);
|
||||
tableDrivers.TabIndex = 0;
|
||||
//
|
||||
// panelDriversTitle
|
||||
//
|
||||
panelDriversTitle.Controls.Add(labelDrivers);
|
||||
panelDriversTitle.Controls.Add(pictureDrivers);
|
||||
panelDriversTitle.Dock = DockStyle.Top;
|
||||
panelDriversTitle.Location = new Point(0, 51);
|
||||
panelDriversTitle.Margin = new Padding(2);
|
||||
panelDriversTitle.Name = "panelDriversTitle";
|
||||
panelDriversTitle.Size = new Size(628, 22);
|
||||
panelDriversTitle.TabIndex = 5;
|
||||
//
|
||||
// labelDrivers
|
||||
//
|
||||
labelDrivers.AutoSize = true;
|
||||
labelDrivers.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
|
||||
labelDrivers.Location = new Point(34, 4);
|
||||
labelDrivers.Margin = new Padding(2, 0, 2, 0);
|
||||
labelDrivers.Name = "labelDrivers";
|
||||
labelDrivers.Size = new Size(126, 15);
|
||||
labelDrivers.TabIndex = 1;
|
||||
labelDrivers.Text = "Drivers and Software";
|
||||
//
|
||||
// pictureDrivers
|
||||
//
|
||||
pictureDrivers.BackgroundImage = (Image)resources.GetObject("pictureDrivers.BackgroundImage");
|
||||
pictureDrivers.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
pictureDrivers.Location = new Point(14, 4);
|
||||
pictureDrivers.Margin = new Padding(2);
|
||||
pictureDrivers.Name = "pictureDrivers";
|
||||
pictureDrivers.Size = new Size(16, 16);
|
||||
pictureDrivers.TabIndex = 2;
|
||||
pictureDrivers.TabStop = false;
|
||||
//
|
||||
// Updates
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(96F, 96F);
|
||||
AutoScaleMode = AutoScaleMode.Dpi;
|
||||
AutoScroll = true;
|
||||
ClientSize = new Size(628, 345);
|
||||
Controls.Add(panelDrivers);
|
||||
Controls.Add(panelDriversTitle);
|
||||
Controls.Add(panelBios);
|
||||
Controls.Add(panelBiosTitle);
|
||||
Margin = new Padding(2);
|
||||
MinimizeBox = false;
|
||||
Name = "Updates";
|
||||
ShowIcon = false;
|
||||
ShowInTaskbar = false;
|
||||
Text = "BIOS and Driver Updates";
|
||||
((System.ComponentModel.ISupportInitialize)pictureBios).EndInit();
|
||||
panelBiosTitle.ResumeLayout(false);
|
||||
panelBiosTitle.PerformLayout();
|
||||
panelBios.ResumeLayout(false);
|
||||
panelBios.PerformLayout();
|
||||
panelDrivers.ResumeLayout(false);
|
||||
panelDrivers.PerformLayout();
|
||||
panelDriversTitle.ResumeLayout(false);
|
||||
panelDriversTitle.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureDrivers).EndInit();
|
||||
ResumeLayout(false);
|
||||
PerformLayout();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private TableLayoutPanel tableBios;
|
||||
private Label labelBIOS;
|
||||
private PictureBox pictureBios;
|
||||
private Panel panelBiosTitle;
|
||||
private Panel panelBios;
|
||||
private Panel panelDrivers;
|
||||
private TableLayoutPanel tableDrivers;
|
||||
private Panel panelDriversTitle;
|
||||
private Label labelDrivers;
|
||||
private PictureBox pictureDrivers;
|
||||
}
|
||||
}
|
||||
225
app/Updates.cs
Normal file
225
app/Updates.cs
Normal file
@@ -0,0 +1,225 @@
|
||||
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;
|
||||
static string model = AppConfig.GetModelShort();
|
||||
|
||||
public Updates()
|
||||
{
|
||||
InitializeComponent();
|
||||
InitTheme();
|
||||
|
||||
Text = Properties.Strings.BiosAndDriverUpdates + ": " + model + " " + GetBiosVersion();
|
||||
labelBIOS.Text = "BIOS";
|
||||
labelDrivers.Text = Properties.Strings.DriverAndSoftware;
|
||||
|
||||
SuspendLayout();
|
||||
tableBios.Visible = false;
|
||||
tableDrivers.Visible = false;
|
||||
|
||||
Task.Run(async () =>
|
||||
{
|
||||
DriversAsync($"https://rog.asus.com/support/webapi/product/GetPDBIOS?website=global&model={model}&cpu=", 1, tableBios);
|
||||
});
|
||||
|
||||
Task.Run(async () =>
|
||||
{
|
||||
DriversAsync($"https://rog.asus.com/support/webapi/product/GetPDDrivers?website=global&model={model}&cpu={model}&osid=52", 0, tableDrivers);
|
||||
});
|
||||
|
||||
Shown += Updates_Shown;
|
||||
}
|
||||
|
||||
private void Updates_Shown(object? sender, EventArgs e)
|
||||
{
|
||||
Height = Program.settingsForm.Height;
|
||||
Top = Program.settingsForm.Top;
|
||||
Left = Program.settingsForm.Left - Width - 5;
|
||||
}
|
||||
private Dictionary<string, string> GetDeviceVersions()
|
||||
{
|
||||
using (ManagementObjectSearcher objSearcher = new ManagementObjectSearcher("Select * from Win32_PnPSignedDriver"))
|
||||
{
|
||||
using (ManagementObjectCollection objCollection = objSearcher.Get())
|
||||
{
|
||||
Dictionary<string, string> list = new();
|
||||
|
||||
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()
|
||||
{
|
||||
using (ManagementObjectSearcher objSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_BIOS"))
|
||||
{
|
||||
using (ManagementObjectCollection objCollection = objSearcher.Get())
|
||||
{
|
||||
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 "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public async void DriversAsync(string url, int type, TableLayoutPanel table)
|
||||
{
|
||||
|
||||
try
|
||||
{
|
||||
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", "Virtual Pet","ROG Font V1.5" };
|
||||
List<DriverDownload> drivers = new();
|
||||
|
||||
for (int i = 0; i < groups.GetArrayLength(); i++)
|
||||
{
|
||||
var categoryName = groups[i].GetProperty("Name").ToString();
|
||||
var files = groups[i].GetProperty("Files");
|
||||
|
||||
var oldTitle = "";
|
||||
|
||||
for (int j = 0; j < files.GetArrayLength(); j++)
|
||||
{
|
||||
|
||||
var file = files[j];
|
||||
var title = file.GetProperty("Title").ToString();
|
||||
|
||||
if (oldTitle != title && !skipList.Contains(title))
|
||||
{
|
||||
|
||||
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 = 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, FontStyle.Underline);
|
||||
versionLabel.ForeColor = colorEco;
|
||||
versionLabel.Padding = new Padding(5, 5, 5, 5);
|
||||
versionLabel.Click += delegate
|
||||
{
|
||||
Process.Start(new ProcessStartInfo(driver.downloadUrl) { UseShellExecute = true });
|
||||
};
|
||||
|
||||
table.RowStyles.Add(new RowStyle(SizeType.AutoSize));
|
||||
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;
|
||||
ResumeLayout(false);
|
||||
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)
|
||||
{
|
||||
Logger.WriteLine(ex.ToString());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
149
app/Updates.resx
Normal file
149
app/Updates.resx
Normal file
@@ -0,0 +1,149 @@
|
||||
<?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>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="pictureBios.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
|
||||
DAAACwwBP0AiyAAAAWlJREFUaEPtmN1Kw0AQhVOkoo8q7ZUiguid9ULwZaS+g3jtnT6FCv4g2DOhA23I
|
||||
LrvHzKTCfPBRkuFsT9JCyDZBEASBB7fwE960R9tcwze4aI+2sZhRfMHf9WeXDygz+exiMaOQxdQu3jOK
|
||||
3ILes2ImcAYf4eaC3s7hFFaxB+9g34JjeA/3YTHHsG+hMT2BxbxADZ7C6p9wAA7gOdQeT7CYH6jBqp9u
|
||||
YOS7tce3nChFQ+LYUF1SIXlCvsPBnpAFpLpkSYXk8S7nXtsjH1JdsqRCcuflIq7aIx9SXbJQISOoLlTI
|
||||
CKoLFTKC6kKFjKC6UCEjqC5UyAiqCxUygupChYygulAhI6guVMgIqgsVMoLqQoWMoLr8+xeaZ6jBMzjG
|
||||
RRzCC6g9ql4pL6EGd0XZaChG7vgubassYfW/QDa2juAD7FvUS9lc+/OuyOaCXbxnFLkFvWcU7Fa4xYxC
|
||||
X+b7tlO8Z0EQBMFQNM0KZ46+F5QUhV4AAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="pictureDrivers.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
|
||||
DAAACwwBP0AiyAAAAnJJREFUaEPtmL1qlEEUhhdF8Acbo51/KGKRWhvBP7S0Ve9AvAQxuYwUFkkjioro
|
||||
DdgogqJipxa2giIqamOiieZ5IQuH4ezOmf2+3R3ke+CBsLvnzJnZmfnOptfR0dHx33AYr+JtfI1f8PeG
|
||||
+luv3UJ95hBWwWa8jE/xL/4Lqs8q5hJuwqlwDt+hV2CJb/AsToxteAO9Ypq4gFtxrOzBF+gVoG3xGOfw
|
||||
JO7H7bgDj+Ip1HsvcdB2e4YzOBZU/FtMB13DRZzFKEfwDnoT0Zbaja2ibeOt/Ac8gaNyDN9jmvc5trqd
|
||||
Bu35P6ibpAm78BGmuXUmWuE8psmtbUxiC3qTaHw76Z5Pr0ptGxVtX2vrm0i3k85Do+eEHlI2oQ6s9ryK
|
||||
HcckjmN6sC/iyOhpaZPptumTTmIVr2FT7qId8wmOhHobuxr6O70q+5NQ8Rf0Qgvoik3HPYjFqOnqJ5F6
|
||||
SHloEm2svOUV2rGvYDHqHG2S6xhlH97Hnxs+RD2No8yjHfsmFqP21yZRexBBxX9FGyu/od6LcAZtrL6R
|
||||
YtTD2yQHMIJW3sZZ72EEfVs27jMWs4I2iRqzCNoyNs76AyPsRBu3jMX8QptE/VCEYRP4jhG0WDZOtRTz
|
||||
CW2SvRhBB9bGWXXHR9BZsXEfsRj17TbJaYyg/asDa2OlzlR0EdJDrE64mCW0SUrueq2gDqz2vNTKR4sX
|
||||
GsuOrVrC2MAazeIF1WQWL6gms3hBNZnFC6rJLF5QTWbxgmoyixdUk1m8oJrM4gXVZJZh3eS0DXWzD9AL
|
||||
rkH9WMqibtL7SThtVZP+YxFCnWO/m/SSTVLVoJUPF9/R0dExKXq9dc3qWY2Pp0GbAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,6 +1,8 @@
|
||||
# G-Helper (GHelper)
|
||||
[](https://GitHub.com/seerge/g-helper/releases/) [](https://GitHub.com/seerge/g-helper/releases/) [](https://GitHub.com/seerge/g-helper/stargazers/)
|
||||
|
||||
[](https://u24.gov.ua/)
|
||||
|
||||
Language: English | [中文](https://github.com/seerge/g-helper/blob/main/docs/README.zh-CN.md)
|
||||
|
||||
## Control tool for Asus laptops
|
||||
@@ -197,7 +199,7 @@ App supports custom actions for M3, M4 and FN+F4 hotkeys. To set them select "Cu
|
||||
2. To simulate any windows key - put appropriate keycode into "action" field, for example ``0x2C`` for Print screen.
|
||||
Full list of keycodes https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
|
||||
|
||||

|
||||

|
||||
|
||||
### Workaround for [bugged bios on G15](https://github.com/seerge/g-helper/issues/253) when external monitor is connected
|
||||
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
[](https://GitHub.com/seerge/g-helper/releases/) [](https://GitHub.com/seerge/g-helper/releases/) [](https://GitHub.com/seerge/g-helper/stargazers/)
|
||||
|
||||
[](https://u24.gov.ua/)
|
||||
|
||||
语言: [English](https://github.com/seerge/g-helper#readme) | 中文
|
||||
|
||||
## 为ASUS笔记本打造的、Armoury Crate(奥创控制中心)的轻量化替代品
|
||||
|
||||
BIN
docs/ua.png
Normal file
BIN
docs/ua.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
Reference in New Issue
Block a user