mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Lid Close / Open detection https://github.com/seerge/g-helper/issues/2013
This commit is contained in:
@@ -73,36 +73,38 @@ public class NativeMethods
|
||||
public class PowerSettingGuid
|
||||
{
|
||||
// 0=Powered by AC, 1=Powered by Battery, 2=Powered by short-term source (UPC)
|
||||
public Guid AcdcPowerSource { get; } = new Guid("5d3e9a59-e9D5-4b00-a6bd-ff34ff516548");
|
||||
public static Guid AcdcPowerSource { get; } = new Guid("5d3e9a59-e9D5-4b00-a6bd-ff34ff516548");
|
||||
// POWERBROADCAST_SETTING.Data = 1-100
|
||||
public Guid BatteryPercentageRemaining { get; } = new Guid("a7ad8041-b45a-4cae-87a3-eecbb468a9e1");
|
||||
public static Guid BatteryPercentageRemaining { get; } = new Guid("a7ad8041-b45a-4cae-87a3-eecbb468a9e1");
|
||||
// Windows 8+: 0=Monitor Off, 1=Monitor On, 2=Monitor Dimmed
|
||||
public Guid ConsoleDisplayState { get; } = new Guid("6fe69556-704a-47a0-8f24-c28d936fda47");
|
||||
public static Guid ConsoleDisplayState { get; } = new Guid("6fe69556-704a-47a0-8f24-c28d936fda47");
|
||||
// Windows 8+, Session 0 enabled: 0=User providing Input, 2=User Idle
|
||||
public Guid GlobalUserPresence { get; } = new Guid("786E8A1D-B427-4344-9207-09E70BDCBEA9");
|
||||
public static Guid GlobalUserPresence { get; } = new Guid("786E8A1D-B427-4344-9207-09E70BDCBEA9");
|
||||
// 0=Monitor Off, 1=Monitor On.
|
||||
public Guid MonitorPowerGuid { get; } = new Guid("02731015-4510-4526-99e6-e5a17ebd1aea");
|
||||
public static Guid MonitorPowerGuid { get; } = new Guid("02731015-4510-4526-99e6-e5a17ebd1aea");
|
||||
// 0=Battery Saver Off, 1=Battery Saver On.
|
||||
public Guid PowerSavingStatus { get; } = new Guid("E00958C0-C213-4ACE-AC77-FECCED2EEEA5");
|
||||
public static Guid PowerSavingStatus { get; } = new Guid("E00958C0-C213-4ACE-AC77-FECCED2EEEA5");
|
||||
|
||||
// Windows 8+: 0=Off, 1=On, 2=Dimmed
|
||||
public Guid SessionDisplayStatus { get; } = new Guid("2B84C20E-AD23-4ddf-93DB-05FFBD7EFCA5");
|
||||
public static Guid SessionDisplayStatus { get; } = new Guid("2B84C20E-AD23-4ddf-93DB-05FFBD7EFCA5");
|
||||
|
||||
// Windows 8+, no Session 0: 0=User providing Input, 2=User Idle
|
||||
public Guid SessionUserPresence { get; } = new Guid("3C0F4548-C03F-4c4d-B9F2-237EDE686376");
|
||||
public static Guid SessionUserPresence { get; } = new Guid("3C0F4548-C03F-4c4d-B9F2-237EDE686376");
|
||||
// 0=Exiting away mode 1=Entering away mode
|
||||
public Guid SystemAwaymode { get; } = new Guid("98a7f580-01f7-48aa-9c0f-44352c29e5C0");
|
||||
public static Guid SystemAwaymode { get; } = new Guid("98a7f580-01f7-48aa-9c0f-44352c29e5C0");
|
||||
|
||||
/* Windows 8+ */
|
||||
// POWERBROADCAST_SETTING.Data not used
|
||||
public Guid IdleBackgroundTask { get; } = new Guid(0x515C31D8, 0xF734, 0x163D, 0xA0, 0xFD, 0x11, 0xA0, 0x8C, 0x91, 0xE8, 0xF1);
|
||||
public static Guid IdleBackgroundTask { get; } = new Guid(0x515C31D8, 0xF734, 0x163D, 0xA0, 0xFD, 0x11, 0xA0, 0x8C, 0x91, 0xE8, 0xF1);
|
||||
|
||||
public Guid PowerSchemePersonality { get; } = new Guid(0x245D8541, 0x3943, 0x4422, 0xB0, 0x25, 0x13, 0xA7, 0x84, 0xF6, 0x79, 0xB7);
|
||||
public static Guid PowerSchemePersonality { get; } = new Guid(0x245D8541, 0x3943, 0x4422, 0xB0, 0x25, 0x13, 0xA7, 0x84, 0xF6, 0x79, 0xB7);
|
||||
|
||||
// The Following 3 Guids are the POWERBROADCAST_SETTING.Data result of PowerSchemePersonality
|
||||
public Guid MinPowerSavings { get; } = new Guid("8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c");
|
||||
public Guid MaxPowerSavings { get; } = new Guid("a1841308-3541-4fab-bc81-f71556f20b4a");
|
||||
public Guid TypicalPowerSavings { get; } = new Guid("381b4222-f694-41f0-9685-ff5bb260df2e");
|
||||
public static Guid MinPowerSavings { get; } = new Guid("8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c");
|
||||
public static Guid MaxPowerSavings { get; } = new Guid("a1841308-3541-4fab-bc81-f71556f20b4a");
|
||||
public static Guid TypicalPowerSavings { get; } = new Guid("381b4222-f694-41f0-9685-ff5bb260df2e");
|
||||
|
||||
public static Guid LIDSWITCH_STATE_CHANGE = new Guid("ba3e0f4d-b817-4094-a2d1-d56379e6a0f3");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ namespace GHelper
|
||||
|
||||
public static ToastForm toast = new ToastForm();
|
||||
|
||||
public static IntPtr unRegPowerNotify;
|
||||
public static IntPtr unRegPowerNotify, unRegPowerNotifyLid;
|
||||
|
||||
private static long lastAuto;
|
||||
private static long lastTheme;
|
||||
@@ -110,8 +110,8 @@ namespace GHelper
|
||||
clamshellControl.ToggleLidAction();
|
||||
|
||||
// Subscribing for monitor power on events
|
||||
PowerSettingGuid settingGuid = new NativeMethods.PowerSettingGuid();
|
||||
unRegPowerNotify = NativeMethods.RegisterPowerSettingNotification(settingsForm.Handle, settingGuid.ConsoleDisplayState, NativeMethods.DEVICE_NOTIFY_WINDOW_HANDLE);
|
||||
unRegPowerNotify = NativeMethods.RegisterPowerSettingNotification(settingsForm.Handle, PowerSettingGuid.ConsoleDisplayState, NativeMethods.DEVICE_NOTIFY_WINDOW_HANDLE);
|
||||
unRegPowerNotifyLid = NativeMethods.RegisterPowerSettingNotification(settingsForm.Handle, PowerSettingGuid.LIDSWITCH_STATE_CHANGE, NativeMethods.DEVICE_NOTIFY_WINDOW_HANDLE);
|
||||
|
||||
|
||||
Task task = Task.Run((Action)PeripheralsProvider.DetectAllAsusMice);
|
||||
@@ -303,6 +303,7 @@ namespace GHelper
|
||||
PeripheralsProvider.UnregisterForDeviceEvents();
|
||||
clamshellControl.UnregisterDisplayEvents();
|
||||
NativeMethods.UnregisterPowerSettingNotification(unRegPowerNotify);
|
||||
NativeMethods.UnregisterPowerSettingNotification(unRegPowerNotifyLid);
|
||||
Application.Exit();
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ using GHelper.USB;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Timers;
|
||||
using static NativeMethods;
|
||||
|
||||
namespace GHelper
|
||||
{
|
||||
@@ -431,29 +432,42 @@ namespace GHelper
|
||||
protected override void WndProc(ref Message m)
|
||||
{
|
||||
|
||||
switch (m.Msg)
|
||||
if (m.Msg == NativeMethods.WM_POWERBROADCAST && m.WParam == (IntPtr)NativeMethods.PBT_POWERSETTINGCHANGE)
|
||||
{
|
||||
case NativeMethods.WM_POWERBROADCAST:
|
||||
if (m.WParam == (IntPtr)NativeMethods.PBT_POWERSETTINGCHANGE)
|
||||
var settings = (NativeMethods.POWERBROADCAST_SETTING)m.GetLParam(typeof(NativeMethods.POWERBROADCAST_SETTING));
|
||||
if (settings.PowerSetting == PowerSettingGuid.LIDSWITCH_STATE_CHANGE)
|
||||
{
|
||||
switch (settings.Data)
|
||||
{
|
||||
var settings = (NativeMethods.POWERBROADCAST_SETTING)m.GetLParam(typeof(NativeMethods.POWERBROADCAST_SETTING));
|
||||
switch (settings.Data)
|
||||
{
|
||||
case 0:
|
||||
Logger.WriteLine("Monitor Power Off");
|
||||
Aura.ApplyBrightness(0);
|
||||
break;
|
||||
case 1:
|
||||
Logger.WriteLine("Monitor Power On");
|
||||
Program.SetAutoModes();
|
||||
break;
|
||||
case 2:
|
||||
Logger.WriteLine("Monitor Dimmed");
|
||||
break;
|
||||
}
|
||||
case 0:
|
||||
Logger.WriteLine("Lid Closed");
|
||||
Aura.ApplyBrightness(0, "Lid");
|
||||
break;
|
||||
case 1:
|
||||
Logger.WriteLine("Lid Open");
|
||||
Aura.ApplyBrightness(InputDispatcher.GetBacklight(), "Lid");
|
||||
break;
|
||||
}
|
||||
m.Result = (IntPtr)1;
|
||||
break;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (settings.Data)
|
||||
{
|
||||
case 0:
|
||||
Logger.WriteLine("Monitor Power Off");
|
||||
Aura.ApplyBrightness(0);
|
||||
break;
|
||||
case 1:
|
||||
Logger.WriteLine("Monitor Power On");
|
||||
Program.SetAutoModes();
|
||||
break;
|
||||
case 2:
|
||||
Logger.WriteLine("Monitor Dimmed");
|
||||
break;
|
||||
}
|
||||
}
|
||||
m.Result = (IntPtr)1;
|
||||
}
|
||||
|
||||
try
|
||||
|
||||
Reference in New Issue
Block a user