From c96aebee1110f3976bc144e2500ee7c298e530d2 Mon Sep 17 00:00:00 2001
From: Valentin Radu <valentin.radu@valinet.ro>
Date: Sun, 7 Aug 2022 00:55:44 +0300
Subject: [PATCH] Explorer: Option to shrink address bar height (thanks @krlvm)

---
 ExplorerPatcher/dllmain.c      | 21 +++++++++++++++++++++
 ExplorerPatcher/settings.reg   |  3 +++
 ExplorerPatcher/settings10.reg |  3 +++
 3 files changed, 27 insertions(+)

diff --git a/ExplorerPatcher/dllmain.c b/ExplorerPatcher/dllmain.c
index d1c6792..30663dd 100644
--- a/ExplorerPatcher/dllmain.c
+++ b/ExplorerPatcher/dllmain.c
@@ -70,6 +70,7 @@ DWORD bOldTaskbar = TRUE;
 DWORD bWasOldTaskbarSet = FALSE;
 DWORD bAllocConsole = FALSE;
 DWORD bHideExplorerSearchBar = FALSE;
+DWORD bShrinkExplorerAdressBar = FALSE;
 DWORD bMicaEffectOnTitlebar = FALSE;
 DWORD bHideIconAndTitleInExplorer = FALSE;
 DWORD bHideControlCenterButton = FALSE;
@@ -6097,6 +6098,15 @@ void WINAPI LoadSettings(LPARAM lParam)
             &dwSize
         );
         dwSize = sizeof(DWORD);
+        RegQueryValueExW(
+            hKey,
+            TEXT("ShrinkExplorerAddressBar"),
+            0,
+            NULL,
+            &bShrinkExplorerAdressBar,
+            &dwSize
+        );
+        dwSize = sizeof(DWORD);
         RegQueryValueExW(
             hKey,
             TEXT("UseClassicDriveGrouping"),
@@ -9483,6 +9493,15 @@ HWND Windows11v22H2_explorer_CreateWindowExW(DWORD dwExStyle, LPCWSTR lpClassNam
 #pragma endregion
 
 
+#pragma region "Shrink File Explorer address bar height"
+int explorerframe_GetSystemMetricsForDpi(int nIndex, UINT dpi)
+{
+    if (bShrinkExplorerAdressBar && nIndex == SM_CYFIXEDFRAME) return 0;
+    return GetSystemMetricsForDpi(nIndex, dpi);
+}
+#pragma endregion
+
+
 DWORD InjectBasicFunctions(BOOL bIsExplorer, BOOL bInstall)
 {
     //Sleep(150);
@@ -9571,6 +9590,7 @@ DWORD InjectBasicFunctions(BOOL bIsExplorer, BOOL bInstall)
                 VnPatchIAT(hExplorerFrame, "user32.dll", "SetWindowLongPtrW", SetWindowLongPtrWHook);
             }
             VnPatchIAT(hExplorerFrame, "API-MS-WIN-CORE-STRING-L1-1-0.DLL", "CompareStringOrdinal", ExplorerFrame_CompareStringOrdinal);
+            VnPatchIAT(hExplorerFrame, "user32.dll", "GetSystemMetricsForDpi", explorerframe_GetSystemMetricsForDpi);
         }
         else
         {
@@ -9583,6 +9603,7 @@ DWORD InjectBasicFunctions(BOOL bIsExplorer, BOOL bInstall)
                 VnPatchIAT(hExplorerFrame, "user32.dll", "SetWindowLongPtrW", SetWindowLongPtrW);
             }
             VnPatchIAT(hExplorerFrame, "API-MS-WIN-CORE-STRING-L1-1-0.DLL", "CompareStringOrdinal", CompareStringOrdinal);
+            VnPatchIAT(hExplorerFrame, "user32.dll", "GetSystemMetricsForDpi", GetSystemMetricsForDpi);
             FreeLibrary(hExplorerFrame);
             FreeLibrary(hExplorerFrame);
         }
diff --git a/ExplorerPatcher/settings.reg b/ExplorerPatcher/settings.reg
index cbe02a1..603c6a8 100644
--- a/ExplorerPatcher/settings.reg
+++ b/ExplorerPatcher/settings.reg
@@ -225,6 +225,9 @@
 ;d Disable modern search bar
 @="{64bc32b5-4eec-4de7-972d-bd8bd0324537}"
 [HKEY_CURRENT_USER\Software\ExplorerPatcher]
+;b Shrink address bar height **
+"ShrinkExplorerAddressBar"=dword:00000000
+[HKEY_CURRENT_USER\Software\ExplorerPatcher]
 ;b Hide search bar completely **
 "HideExplorerSearchBar"=dword:00000000
 ;s Explorer_TitlebarSection !IsWindows11Version22H2OrHigher
diff --git a/ExplorerPatcher/settings10.reg b/ExplorerPatcher/settings10.reg
index 5f946af..1221439 100644
--- a/ExplorerPatcher/settings10.reg
+++ b/ExplorerPatcher/settings10.reg
@@ -169,6 +169,9 @@
 ;d Disable modern search bar
 @="{64bc32b5-4eec-4de7-972d-bd8bd0324537}"
 [HKEY_CURRENT_USER\Software\ExplorerPatcher]
+;b Shrink address bar height **
+"ShrinkExplorerAddressBar"=dword:00000000
+[HKEY_CURRENT_USER\Software\ExplorerPatcher]
 ;b Hide search bar completely **
 "HideExplorerSearchBar"=dword:00000000
 ;p 2