mirror of
https://github.com/valinet/ExplorerPatcher.git
synced 2025-02-20 20:41:26 +01:00
Posibility to set Windows 11 taskbar position on screen from Properties
This commit is contained in:
parent
91b0b93179
commit
6225b78f99
@ -7,6 +7,7 @@ BOOL g_darkModeEnabled = FALSE;
|
||||
static void(*RefreshImmersiveColorPolicyState)() = NULL;
|
||||
static BOOL(*ShouldAppsUseDarkMode)() = NULL;
|
||||
DWORD dwTaskbarPosition = 3;
|
||||
BOOL gui_bOldTaskbar = TRUE;
|
||||
BOOL IsHighContrast()
|
||||
{
|
||||
HIGHCONTRASTW highContrast;
|
||||
@ -63,9 +64,33 @@ LSTATUS GUI_RegSetValueExW(
|
||||
&srd,
|
||||
sizeof(StuckRectsData)
|
||||
);
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
return ERROR_ACCESS_DENIED;
|
||||
pcbData = sizeof(StuckRectsData);
|
||||
RegGetValueW(
|
||||
HKEY_CURRENT_USER,
|
||||
L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\StuckRects3",
|
||||
L"Settings",
|
||||
REG_BINARY,
|
||||
NULL,
|
||||
&srd,
|
||||
&pcbData);
|
||||
if (pcbData == sizeof(StuckRectsData) && srd.pvData[0] == sizeof(StuckRectsData) && srd.pvData[1] == -2)
|
||||
{
|
||||
srd.pvData[3] = *(DWORD*)lpData;
|
||||
if (srd.pvData[3] != 1 && srd.pvData[3] != 3) // Disallow left/right settings for Windows 11 taskbar, as this breaks it
|
||||
{
|
||||
srd.pvData[3] = 3;
|
||||
}
|
||||
RegSetKeyValueW(
|
||||
HKEY_CURRENT_USER,
|
||||
L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\StuckRects3",
|
||||
L"Settings",
|
||||
REG_BINARY,
|
||||
&srd,
|
||||
sizeof(StuckRectsData)
|
||||
);
|
||||
}
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
else if (!wcscmp(lpValueName, L"Virtualized_" _T(EP_CLSID) L"_MMTaskbarPosition"))
|
||||
{
|
||||
@ -124,9 +149,66 @@ LSTATUS GUI_RegSetValueExW(
|
||||
}
|
||||
RegCloseKey(hKey);
|
||||
SendNotifyMessageW(HWND_BROADCAST, WM_WININICHANGE, 0, (LPARAM)L"TraySettings");
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
return ERROR_ACCESS_DENIED;
|
||||
RegOpenKeyExW(
|
||||
HKEY_CURRENT_USER,
|
||||
L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MMStuckRects3",
|
||||
REG_OPTION_NON_VOLATILE,
|
||||
KEY_READ | KEY_WRITE,
|
||||
&hKey
|
||||
);
|
||||
if (hKey)
|
||||
{
|
||||
DWORD cValues = 0;
|
||||
RegQueryInfoKeyW(
|
||||
hKey,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
&cValues,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL
|
||||
);
|
||||
WCHAR name[60];
|
||||
DWORD szName = 60;
|
||||
StuckRectsData srd;
|
||||
DWORD pcbData = sizeof(StuckRectsData);
|
||||
for (int i = 0; i < cValues; ++i)
|
||||
{
|
||||
RegEnumValueW(
|
||||
hKey,
|
||||
i,
|
||||
name,
|
||||
&szName,
|
||||
0,
|
||||
NULL,
|
||||
&srd,
|
||||
&pcbData
|
||||
);
|
||||
szName = 60;
|
||||
srd.pvData[3] = *(DWORD*)lpData;
|
||||
if (srd.pvData[3] != 1 && srd.pvData[3] != 3) // Disallow left/right settings for Windows 11 taskbar, as this breaks it
|
||||
{
|
||||
srd.pvData[3] = 3;
|
||||
}
|
||||
pcbData = sizeof(StuckRectsData);
|
||||
RegSetKeyValueW(
|
||||
HKEY_CURRENT_USER,
|
||||
L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MMStuckRects3",
|
||||
name,
|
||||
REG_BINARY,
|
||||
&srd,
|
||||
sizeof(StuckRectsData)
|
||||
);
|
||||
}
|
||||
RegCloseKey(hKey);
|
||||
}
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
else if (!wcscmp(lpValueName, L"Virtualized_" _T(EP_CLSID) L"_AutoHideTaskbar"))
|
||||
{
|
||||
@ -182,8 +264,15 @@ LSTATUS GUI_RegQueryValueExW(
|
||||
&pcbData);
|
||||
if (pcbData == sizeof(StuckRectsData) && srd.pvData[0] == sizeof(StuckRectsData) && srd.pvData[1] == -2)
|
||||
{
|
||||
*(DWORD*)lpData = srd.pvData[3];
|
||||
dwTaskbarPosition = srd.pvData[3];
|
||||
if (!gui_bOldTaskbar)
|
||||
{
|
||||
if (srd.pvData[3] != 1 && srd.pvData[3] != 3) // Disallow left/right settings for Windows 11 taskbar, as this breaks it
|
||||
{
|
||||
srd.pvData[3] = 3;
|
||||
}
|
||||
}
|
||||
*(DWORD*)lpData = srd.pvData[3];
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
return ERROR_ACCESS_DENIED;
|
||||
@ -216,6 +305,13 @@ LSTATUS GUI_RegQueryValueExW(
|
||||
);
|
||||
if (pcbData == sizeof(StuckRectsData) && srd.pvData[0] == sizeof(StuckRectsData) && srd.pvData[1] == -2)
|
||||
{
|
||||
if (!gui_bOldTaskbar)
|
||||
{
|
||||
if (srd.pvData[3] != 1 && srd.pvData[3] != 3) // Disallow left/right settings for Windows 11 taskbar, as this breaks it
|
||||
{
|
||||
srd.pvData[3] = 3;
|
||||
}
|
||||
}
|
||||
*(DWORD*)lpData = srd.pvData[3];
|
||||
RegCloseKey(hKey);
|
||||
return ERROR_SUCCESS;
|
||||
@ -1063,6 +1159,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
|
||||
numChRd = getline(&l, &bufsiz, f);
|
||||
if (strncmp(l, ";x ", 3))
|
||||
{
|
||||
free(l);
|
||||
i--;
|
||||
continue;
|
||||
}
|
||||
@ -1117,6 +1214,31 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
|
||||
if (d) *d = 0;
|
||||
wchar_t* p = wcschr(name, L'"');
|
||||
if (p) *p = 0;
|
||||
if (!wcscmp(name, L"Virtualized_" _T(EP_CLSID) L"_TaskbarPosition") || !wcscmp(name, L"Virtualized_" _T(EP_CLSID) L"_MMTaskbarPosition"))
|
||||
{
|
||||
if (!gui_bOldTaskbar)
|
||||
{
|
||||
MENUITEMINFOA menuInfo;
|
||||
ZeroMemory(&menuInfo, sizeof(MENUITEMINFOA));
|
||||
menuInfo.cbSize = sizeof(MENUITEMINFOA);
|
||||
menuInfo.fMask = MIIM_DATA;
|
||||
GetMenuItemInfoA(hMenu, 1, FALSE, &menuInfo);
|
||||
if (menuInfo.dwItemData)
|
||||
{
|
||||
free(menuInfo.dwItemData);
|
||||
}
|
||||
RemoveMenu(hMenu, 1, MF_BYCOMMAND);
|
||||
ZeroMemory(&menuInfo, sizeof(MENUITEMINFOA));
|
||||
menuInfo.cbSize = sizeof(MENUITEMINFOA);
|
||||
menuInfo.fMask = MIIM_DATA;
|
||||
GetMenuItemInfoA(hMenu, 3, FALSE, &menuInfo);
|
||||
if (menuInfo.dwItemData)
|
||||
{
|
||||
free(menuInfo.dwItemData);
|
||||
}
|
||||
RemoveMenu(hMenu, 3, MF_BYCOMMAND);
|
||||
}
|
||||
}
|
||||
HKEY hKey = NULL;
|
||||
wchar_t* bIsHKLM = wcsstr(section, L"HKEY_LOCAL_MACHINE");
|
||||
bIsHKLM = !bIsHKLM ? NULL : ((bIsHKLM - section) < 3);
|
||||
@ -1157,6 +1279,10 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt)
|
||||
&value,
|
||||
&dwSize
|
||||
);
|
||||
if (!wcscmp(name, L"OldTaskbar"))
|
||||
{
|
||||
gui_bOldTaskbar = value;
|
||||
}
|
||||
if (hDC && bInvert)
|
||||
{
|
||||
value = !value;
|
||||
|
Loading…
x
Reference in New Issue
Block a user