mirror of
https://github.com/valinet/ExplorerPatcher.git
synced 2025-02-17 11:08:41 +01:00
Start menu: Make "Pin to Start" work from folder views when Windows 10 menu is enabled
This commit is contained in:
parent
113a243d32
commit
1b27199ecf
@ -85,6 +85,7 @@ DWORD dwOrbStyle = 0;
|
|||||||
DWORD bEnableSymbolDownload = TRUE;
|
DWORD bEnableSymbolDownload = TRUE;
|
||||||
DWORD dwAltTabSettings = 0;
|
DWORD dwAltTabSettings = 0;
|
||||||
DWORD dwSnapAssistSettings = 0;
|
DWORD dwSnapAssistSettings = 0;
|
||||||
|
DWORD dwStartShowClassicMode = 0;
|
||||||
BOOL bDoNotRedirectSystemToSettingsApp = FALSE;
|
BOOL bDoNotRedirectSystemToSettingsApp = FALSE;
|
||||||
BOOL bDoNotRedirectProgramsAndFeaturesToSettingsApp = FALSE;
|
BOOL bDoNotRedirectProgramsAndFeaturesToSettingsApp = FALSE;
|
||||||
BOOL bDoNotRedirectDateAndTimeToSettingsApp = FALSE;
|
BOOL bDoNotRedirectDateAndTimeToSettingsApp = FALSE;
|
||||||
@ -7931,6 +7932,31 @@ BOOL explorer_RegisterHotkeyHook(HWND hWnd, int id, UINT fsModifiers, UINT vk)
|
|||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
|
||||||
|
|
||||||
|
#pragma region "Redirect certain library loads to other versions"
|
||||||
|
HMODULE patched_LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
|
||||||
|
{
|
||||||
|
WCHAR path[MAX_PATH];
|
||||||
|
GetSystemDirectoryW(path, MAX_PATH);
|
||||||
|
wcscat_s(path, MAX_PATH, L"\\StartTileData.dll");
|
||||||
|
if (!_wcsicmp(path, lpLibFileName))
|
||||||
|
{
|
||||||
|
GetWindowsDirectoryW(path, MAX_PATH);
|
||||||
|
wcscat_s(path, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\\StartTileDataLegacy.dll");
|
||||||
|
return LoadLibraryExW(path, hFile, dwFlags);
|
||||||
|
}
|
||||||
|
GetSystemDirectoryW(path, MAX_PATH);
|
||||||
|
wcscat_s(path, MAX_PATH, L"\\AppResolver.dll");
|
||||||
|
if (!_wcsicmp(path, lpLibFileName))
|
||||||
|
{
|
||||||
|
GetWindowsDirectoryW(path, MAX_PATH);
|
||||||
|
wcscat_s(path, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\\AppResolverLegacy.dll");
|
||||||
|
return LoadLibraryExW(path, hFile, dwFlags);
|
||||||
|
}
|
||||||
|
return LoadLibraryExW(lpLibFileName, hFile, dwFlags);
|
||||||
|
}
|
||||||
|
#pragma endregion
|
||||||
|
|
||||||
|
|
||||||
DWORD InjectBasicFunctions(BOOL bIsExplorer, BOOL bInstall)
|
DWORD InjectBasicFunctions(BOOL bIsExplorer, BOOL bInstall)
|
||||||
{
|
{
|
||||||
//Sleep(150);
|
//Sleep(150);
|
||||||
@ -8053,6 +8079,29 @@ DWORD InjectBasicFunctions(BOOL bIsExplorer, BOOL bInstall)
|
|||||||
FreeLibrary(hWindowsUIFileExplorer);
|
FreeLibrary(hWindowsUIFileExplorer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (bInstall)
|
||||||
|
{
|
||||||
|
DWORD dwSize = sizeof(DWORD);
|
||||||
|
RegGetValueW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced", L"Start_ShowClassicMode", RRF_RT_DWORD, NULL, &dwStartShowClassicMode, &dwSize);
|
||||||
|
}
|
||||||
|
if (dwStartShowClassicMode)
|
||||||
|
{
|
||||||
|
HANDLE hCombase = LoadLibraryW(L"combase.dll");
|
||||||
|
if (hCombase)
|
||||||
|
{
|
||||||
|
if (bInstall)
|
||||||
|
{
|
||||||
|
VnPatchIAT(hCombase, "api-ms-win-core-libraryloader-l1-2-0.dll", "LoadLibraryExW", patched_LoadLibraryExW);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
VnPatchIAT(hCombase, "api-ms-win-core-libraryloader-l1-2-0.dll", "LoadLibraryExW", LoadLibraryExW);
|
||||||
|
FreeLibrary(hCombase);
|
||||||
|
FreeLibrary(hCombase);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
INT64(*twinui_pcshell_IsUndockedAssetAvailableFunc)(INT a1, INT64 a2, INT64 a3, const char* a4);
|
INT64(*twinui_pcshell_IsUndockedAssetAvailableFunc)(INT a1, INT64 a2, INT64 a3, const char* a4);
|
||||||
@ -8947,7 +8996,6 @@ char VisibilityChangedEventArguments_GetVisible(__int64 a1)
|
|||||||
return v3[0];
|
return v3[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD StartMenu_ShowClassicMode = 0;
|
|
||||||
DWORD StartMenu_maximumFreqApps = 6;
|
DWORD StartMenu_maximumFreqApps = 6;
|
||||||
DWORD StartMenu_ShowAllApps = 0;
|
DWORD StartMenu_ShowAllApps = 0;
|
||||||
|
|
||||||
@ -9046,11 +9094,11 @@ void StartMenu_LoadSettings(BOOL bRestartIfChanged)
|
|||||||
&dwVal,
|
&dwVal,
|
||||||
&dwSize
|
&dwSize
|
||||||
);
|
);
|
||||||
if (bRestartIfChanged && dwVal != StartMenu_ShowClassicMode)
|
if (bRestartIfChanged && dwVal != dwStartShowClassicMode)
|
||||||
{
|
{
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
StartMenu_ShowClassicMode = dwVal;
|
dwStartShowClassicMode = dwVal;
|
||||||
RegCloseKey(hKey);
|
RegCloseKey(hKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -9210,20 +9258,6 @@ int start_SetWindowRgn(HWND hWnd, HRGN hRgn, BOOL bRedraw)
|
|||||||
return SetWindowRgn(hWnd, hRgn, bRedraw);
|
return SetWindowRgn(hWnd, hRgn, bRedraw);
|
||||||
}
|
}
|
||||||
|
|
||||||
HMODULE start_LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
|
|
||||||
{
|
|
||||||
WCHAR path[MAX_PATH];
|
|
||||||
GetSystemDirectoryW(path, MAX_PATH);
|
|
||||||
wcscat_s(path, MAX_PATH, L"\\StartTileData.dll");
|
|
||||||
if (!_wcsicmp(path, lpLibFileName))
|
|
||||||
{
|
|
||||||
GetWindowsDirectoryW(path, MAX_PATH);
|
|
||||||
wcscat_s(path, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\\StartTileDataLegacy.dll");
|
|
||||||
return LoadLibraryExW(path, hFile, dwFlags);
|
|
||||||
}
|
|
||||||
return LoadLibraryExW(lpLibFileName, hFile, dwFlags);
|
|
||||||
}
|
|
||||||
|
|
||||||
int WINAPI SetupMessage(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType)
|
int WINAPI SetupMessage(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
@ -9645,7 +9679,7 @@ void InjectStartMenu()
|
|||||||
|
|
||||||
StartMenu_LoadSettings(FALSE);
|
StartMenu_LoadSettings(FALSE);
|
||||||
|
|
||||||
if (StartMenu_ShowClassicMode)
|
if (dwStartShowClassicMode)
|
||||||
{
|
{
|
||||||
// Fixes hang when Start menu closes
|
// Fixes hang when Start menu closes
|
||||||
VnPatchDelayIAT(hStartUI, "ext-ms-win-ntuser-draw-l1-1-0.dll", "SetWindowRgn", start_SetWindowRgn);
|
VnPatchDelayIAT(hStartUI, "ext-ms-win-ntuser-draw-l1-1-0.dll", "SetWindowRgn", start_SetWindowRgn);
|
||||||
@ -9653,7 +9687,7 @@ void InjectStartMenu()
|
|||||||
// Redirects to StartTileData from 22000.51 which works with the legacy menu
|
// Redirects to StartTileData from 22000.51 which works with the legacy menu
|
||||||
LoadLibraryW(L"combase.dll");
|
LoadLibraryW(L"combase.dll");
|
||||||
HANDLE hCombase = GetModuleHandleW(L"combase.dll");
|
HANDLE hCombase = GetModuleHandleW(L"combase.dll");
|
||||||
VnPatchIAT(hCombase, "api-ms-win-core-libraryloader-l1-2-0.dll", "LoadLibraryExW", start_LoadLibraryExW);
|
VnPatchIAT(hCombase, "api-ms-win-core-libraryloader-l1-2-0.dll", "LoadLibraryExW", patched_LoadLibraryExW);
|
||||||
|
|
||||||
// Redirects to pri files from 22000.51 which work with the legacy menu
|
// Redirects to pri files from 22000.51 which work with the legacy menu
|
||||||
LoadLibraryW(L"MrmCoreR.dll");
|
LoadLibraryW(L"MrmCoreR.dll");
|
||||||
|
@ -871,6 +871,15 @@ int WINAPI wWinMain(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (bOk && IsWindows11())
|
if (bOk && IsWindows11())
|
||||||
|
{
|
||||||
|
GetWindowsDirectoryW(wszPath, MAX_PATH);
|
||||||
|
wcscat_s(wszPath, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\\AppResolverLegacy.dll");
|
||||||
|
if (ShouldDownloadOrDelete(bInstall, hInstance, wszPath, "BAD744C69B92BBD508D3950B41822683") && IsConnectedToInternet() == TRUE)
|
||||||
|
{
|
||||||
|
DownloadFile(L"https://github.com/valinet/ExplorerPatcher/files/8148997/AppResolverLegacy.dll.txt", 10 * 1024 * 1024, wszPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (bOk && IsWindows11())
|
||||||
{
|
{
|
||||||
GetWindowsDirectoryW(wszPath, MAX_PATH);
|
GetWindowsDirectoryW(wszPath, MAX_PATH);
|
||||||
wcscat_s(wszPath, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\\StartTileDataLegacy.dll");
|
wcscat_s(wszPath, MAX_PATH, L"\\SystemApps\\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\\StartTileDataLegacy.dll");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user