Skip to content

Commit 1a5f62a

Browse files
gbjbaanbge0rdi
authored andcommitted
Code to check registry for Power Button user choice. (#174)
Fixes #173
1 parent 935c6fc commit 1a5f62a

File tree

1 file changed

+52
-19
lines changed

1 file changed

+52
-19
lines changed

Src/StartMenu/StartMenuDLL/MenuContainer.cpp

Lines changed: 52 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7709,27 +7709,57 @@ HWND CMenuContainer::ToggleStartMenu( int taskbarId, bool bKeyboard, bool bAllPr
77097709

77107710
s_bHasUpdates=(!bRemote || GetSettingBool(L"RemoteShutdown")) && GetSettingBool(L"CheckWinUpdates") && CheckForUpdates();
77117711

7712-
SYSTEM_POWER_CAPABILITIES powerCaps;
7713-
GetPwrCapabilities(&powerCaps);
7712+
// Check control panel options for power buttons
7713+
bool bHibernate = true, bSleep = true, bLock = true;
7714+
{
7715+
CRegKey regKeyButtons;
7716+
if (regKeyButtons.Open(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FlyoutMenuSettings", KEY_READ) == ERROR_SUCCESS)
7717+
{
7718+
DWORD dwValue = 1;
7719+
if (regKeyButtons.QueryDWORDValue(L"ShowHibernateOption", dwValue) == ERROR_SUCCESS)
7720+
if (dwValue == 0)
7721+
bHibernate = false;
7722+
7723+
if (regKeyButtons.QueryDWORDValue(L"ShowLockOption", dwValue) == ERROR_SUCCESS)
7724+
if (dwValue == 0)
7725+
bLock = false;
77147726

7715-
bool bHibernate=false;
7716-
if (powerCaps.HiberFilePresent)
7727+
if (regKeyButtons.QueryDWORDValue(L"ShowSleepOption", dwValue) == ERROR_SUCCESS)
7728+
if (dwValue == 0)
7729+
bSleep = false;
7730+
}
7731+
}
7732+
7733+
if (bHibernate || bSleep)
77177734
{
7718-
bHibernate=true;
7719-
/* disabled for now, use group policy to hide Hibernate
7720-
// disable hibernate if hybrid sleep (fast s4) is enabled
7721-
SYSTEM_POWER_STATUS status;
7722-
if (GetSystemPowerStatus(&status) && (status.ACLineStatus==0 || status.ACLineStatus==1))
7735+
SYSTEM_POWER_CAPABILITIES powerCaps;
7736+
GetPwrCapabilities(&powerCaps);
7737+
7738+
// no sleep capabilities, turn off the sleep option
7739+
if (!(powerCaps.SystemS1 || powerCaps.SystemS2 || powerCaps.SystemS3 || powerCaps.AoAc))
77237740
{
7724-
GUID *pScheme;
7725-
if (PowerGetActiveScheme(NULL,&pScheme)==ERROR_SUCCESS)
7726-
{
7727-
DWORD index;
7728-
if ((status.ACLineStatus==1?PowerReadACValueIndex:PowerReadDCValueIndex)(NULL,pScheme,&GUID_SLEEP_SUBGROUP,&GUID_HIBERNATE_FASTS4_POLICY,&index)==ERROR_SUCCESS && index)
7729-
bHibernate=false;
7730-
LocalFree(pScheme);
7731-
}
7732-
}*/
7741+
bSleep = false;
7742+
}
7743+
7744+
// no hibernate capabilities, turn off hibernate option
7745+
if (!powerCaps.HiberFilePresent)
7746+
{
7747+
bHibernate = false;
7748+
/* disabled for now, use group policy to hide Hibernate
7749+
// disable hibernate if hybrid sleep (fast s4) is enabled
7750+
SYSTEM_POWER_STATUS status;
7751+
if (GetSystemPowerStatus(&status) && (status.ACLineStatus==0 || status.ACLineStatus==1))
7752+
{
7753+
GUID *pScheme;
7754+
if (PowerGetActiveScheme(NULL,&pScheme)==ERROR_SUCCESS)
7755+
{
7756+
DWORD index;
7757+
if ((status.ACLineStatus==1?PowerReadACValueIndex:PowerReadDCValueIndex)(NULL,pScheme,&GUID_SLEEP_SUBGROUP,&GUID_HIBERNATE_FASTS4_POLICY,&index)==ERROR_SUCCESS && index)
7758+
bHibernate=false;
7759+
LocalFree(pScheme);
7760+
}
7761+
}*/
7762+
}
77337763
}
77347764

77357765
for (int i=0;i<_countof(g_StdOptions);i++)
@@ -7939,8 +7969,11 @@ HWND CMenuContainer::ToggleStartMenu( int taskbarId, bool bKeyboard, bool bAllPr
79397969
g_StdOptions[i].options=MENU_ENABLED|MENU_EXPANDED;
79407970
}
79417971
break;
7972+
case MENU_LOCK:
7973+
g_StdOptions[i].options=(bLock)?MENU_ENABLED|MENU_EXPANDED:0;
7974+
break;
79427975
case MENU_SLEEP:
7943-
g_StdOptions[i].options=(!s_bNoClose && (powerCaps.SystemS1 || powerCaps.SystemS2 || powerCaps.SystemS3 || powerCaps.AoAc))?MENU_ENABLED|MENU_EXPANDED:0;
7976+
g_StdOptions[i].options=(!s_bNoClose && bSleep)?MENU_ENABLED|MENU_EXPANDED:0;
79447977
break;
79457978
case MENU_HIBERNATE:
79467979
g_StdOptions[i].options=(!s_bNoClose && bHibernate)?MENU_ENABLED|MENU_EXPANDED:0;

0 commit comments

Comments
 (0)