diff --git a/ExplorerPatcher/GUI.c b/ExplorerPatcher/GUI.c index 029913d..2182b6c 100644 --- a/ExplorerPatcher/GUI.c +++ b/ExplorerPatcher/GUI.c @@ -335,7 +335,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt) topAdj = dwMaxHeight + GUI_CAPTION_LINE_HEIGHT * dy; hOldFont = SelectObject(hdcPaint, hFontCaption); } - else if (!strncmp(line, ";u ", 3)) + else if (!strncmp(line, ";u ", 3) || (!strncmp(line, ";y ", 3) && !strstr(line, "\xF0\x9F"))) { hOldFont = SelectObject(hdcPaint, hFontUnderline); } @@ -513,7 +513,30 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt) { if (FindWindowW(L"Shell_TrayWnd", NULL)) { - ZZRestartExplorer(); + //ZZRestartExplorer(0, 0, 0, 0); + WCHAR wszPath[MAX_PATH]; + ZeroMemory(wszPath, MAX_PATH * sizeof(WCHAR)); + GetSystemDirectoryW(wszPath, MAX_PATH); + wcscat_s(wszPath, MAX_PATH, L"\\taskkill.exe"); + ShellExecuteW( + NULL, + L"open", + wszPath, + L"/f /im explorer.exe", + NULL, + SW_SHOWMINIMIZED + ); + GetWindowsDirectoryW(wszPath, MAX_PATH); + wcscat_s(wszPath, MAX_PATH, L"\\explorer.exe"); + Sleep(1000); + ShellExecuteW( + NULL, + L"open", + wszPath, + NULL, + NULL, + SW_SHOWNORMAL + ); } else { @@ -669,7 +692,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt) tabOrder++; } } - else if (!strncmp(line, ";l ", 3) || !strncmp(line, ";c ", 3) || !strncmp(line, ";b ", 3) || !strncmp(line, ";i ", 3) || !strncmp(line, ";d ", 3) || !strncmp(line, ";v ", 3)) + else if (!strncmp(line, ";l ", 3) || !strncmp(line, ";y ", 3) || !strncmp(line, ";c ", 3) || !strncmp(line, ";z ", 3) || !strncmp(line, ";b ", 3) || !strncmp(line, ";i ", 3) || !strncmp(line, ";d ", 3) || !strncmp(line, ";v ", 3)) { ZeroMemory(text, (MAX_LINE_LENGTH + 3) * sizeof(wchar_t)); text[0] = L'\u2795'; @@ -678,7 +701,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt) MultiByteToWideChar( CP_UTF8, MB_PRECOMPOSED, - !strncmp(line, ";c ", 3) ? strchr(line + 3, ' ') + 1 : line + 3, + !strncmp(line, ";c ", 3) || !strncmp(line, ";z ", 3) ? strchr(line + 3, ' ') + 1 : line + 3, numChRd - 3, text + 3, MAX_LINE_LENGTH @@ -688,16 +711,17 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt) if (x) *x = 0; x = wcschr(text, L'\r'); if (x) *x = 0; - if (!strncmp(line, ";c ", 3) || !strncmp(line, ";b ", 3) || !strncmp(line, ";i ", 3) || !strncmp(line, ";d ", 3) || !strncmp(line, ";v ", 3)) + if (!strncmp(line, ";c ", 3) || !strncmp(line, ";z ", 3) || !strncmp(line, ";b ", 3) || !strncmp(line, ";i ", 3) || !strncmp(line, ";d ", 3) || !strncmp(line, ";v ", 3)) { HMENU hMenu = NULL; BOOL bChoice = !strncmp(line, ";c ", 3); + BOOL bChoiceLefted = !strncmp(line, ";z ", 3); BOOL bInvert = !strncmp(line, ";i ", 3); BOOL bJustCheck = !strncmp(line, ";d ", 3); BOOL bBool = !strncmp(line, ";b ", 3); BOOL bValue = !strncmp(line, ";v ", 3); DWORD numChoices = 0; - if (bChoice) + if (bChoice || bChoiceLefted) { char* p = strchr(line + 3, ' '); if (p) *p = 0; @@ -764,6 +788,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt) wchar_t* p = wcschr(name, L'"'); if (p) *p = 0; HKEY hKey = NULL; + BOOL bIsHKLM = wcsstr(section, L"HKEY_LOCAL_MACHINE"); DWORD dwDisposition; DWORD dwSize = sizeof(DWORD); DWORD value = FALSE; @@ -779,12 +804,12 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt) if (!bJustCheck) { RegCreateKeyExW( - HKEY_CURRENT_USER, + bIsHKLM ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER, wcschr(section, L'\\') + 1, 0, NULL, REG_OPTION_NON_VOLATILE, - KEY_READ | (hDC ? 0 : KEY_WRITE), + KEY_READ | (hDC ? 0 : (!bIsHKLM ? KEY_WRITE : 0)), NULL, &hKey, &dwDisposition @@ -809,10 +834,10 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt) else { RegOpenKeyExW( - HKEY_CURRENT_USER, + bIsHKLM ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER, wcschr(section, L'\\') + 1, REG_OPTION_NON_VOLATILE, - KEY_READ | (hDC ? 0 : KEY_WRITE), + KEY_READ | (hDC ? 0 : (!bIsHKLM ? KEY_WRITE : 0)), &hKey ); if (hKey == NULL || hKey == INVALID_HANDLE_VALUE) @@ -849,7 +874,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt) buf ); } - else if (bChoice) + else if (bChoice || bChoiceLefted) { wcscat_s( text, @@ -881,7 +906,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt) &rcTemp, DT_CALCRECT ); - rcText.left += rcTemp.right - rcTemp.left; + rcText.left += (!bChoiceLefted ? (rcTemp.right - rcTemp.left) : 0); for (unsigned int i = 0; i < wcslen(text); ++i) { text[i] = text[i + 3]; @@ -901,52 +926,110 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt) { if (bJustCheck) { - if (hKey) + if (bIsHKLM && wcsstr(section, L"Software\\Classes\\CLSID\\" _T(EP_CLSID) L"\\InprocServer32")) { - RegCloseKey(hKey); - hKey = NULL; - RegDeleteKeyExW( - HKEY_CURRENT_USER, - wcschr(section, L'\\') + 1, - REG_OPTION_NON_VOLATILE, - 0 - ); + WCHAR wszArgs[MAX_PATH]; + if (!hKey) + { + wszArgs[0] = L'\"'; + SHGetFolderPathW(NULL, SPECIAL_FOLDER, NULL, SHGFP_TYPE_CURRENT, wszArgs + 1); + wcscat_s(wszArgs, MAX_PATH, _T(APP_RELATIVE_PATH) L"\\" _T(PRODUCT_NAME) L".amd64.dll\""); + } + else + { + wszArgs[0] = L'/'; + wszArgs[1] = L'u'; + wszArgs[2] = L' '; + wszArgs[3] = L'"'; + SHGetFolderPathW(NULL, SPECIAL_FOLDER, NULL, SHGFP_TYPE_CURRENT, wszArgs + 4); + wcscat_s(wszArgs, MAX_PATH, _T(APP_RELATIVE_PATH) L"\\" _T(PRODUCT_NAME) L".amd64.dll\""); + } + wprintf(L"%s\n", wszArgs); + WCHAR wszApp[MAX_PATH * 2]; + GetSystemDirectoryW(wszApp, MAX_PATH * 2); + wcscat_s(wszApp, MAX_PATH * 2, L"\\regsvr32.exe"); + wprintf(L"%s\n", wszApp); + SHELLEXECUTEINFOW sei; + ZeroMemory(&sei, sizeof(SHELLEXECUTEINFOW)); + sei.cbSize = sizeof(sei); + sei.fMask = SEE_MASK_NOCLOSEPROCESS; + sei.hwnd = NULL; + sei.hInstApp = NULL; + sei.lpVerb = L"runas"; + sei.lpFile = wszApp; + sei.lpParameters = wszArgs; + sei.hwnd = NULL; + sei.nShow = SW_NORMAL; + if (ShellExecuteExW(&sei) && sei.hProcess) + { + WaitForSingleObject(sei.hProcess, INFINITE); + DWORD dwExitCode = 0; + if (GetExitCodeProcess(sei.hProcess, &dwExitCode) && !dwExitCode) + { + + } + else + { + + } + } + else + { + DWORD dwError = GetLastError(); + if (dwError == ERROR_CANCELLED) + { + } + } } else { - RegCreateKeyExW( - HKEY_CURRENT_USER, - wcschr(section, L'\\') + 1, - 0, - NULL, - REG_OPTION_NON_VOLATILE, - KEY_WRITE, - NULL, - &hKey, - &dwDisposition - ); - if (hKey == NULL || hKey == INVALID_HANDLE_VALUE) + if (hKey) { + RegCloseKey(hKey); hKey = NULL; - } - if (d[1] == '"') - { - wchar_t* p = wcschr(d + 2, L'"'); - if (p) *p = 0; - RegSetValueExW( - hKey, - !wcsncmp(name, L"@", 1) ? NULL : name, - 0, - REG_SZ, - d + 2, - wcslen(d + 2) * sizeof(wchar_t) + RegDeleteKeyExW( + bIsHKLM ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER, + wcschr(section, L'\\') + 1, + REG_OPTION_NON_VOLATILE, + 0 ); } + else + { + RegCreateKeyExW( + bIsHKLM ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER, + wcschr(section, L'\\') + 1, + 0, + NULL, + REG_OPTION_NON_VOLATILE, + KEY_WRITE, + NULL, + &hKey, + &dwDisposition + ); + if (hKey == NULL || hKey == INVALID_HANDLE_VALUE) + { + hKey = NULL; + } + if (d[1] == '"') + { + wchar_t* p = wcschr(d + 2, L'"'); + if (p) *p = 0; + RegSetValueExW( + hKey, + !wcsncmp(name, L"@", 1) ? NULL : name, + 0, + REG_SZ, + d + 2, + wcslen(d + 2) * sizeof(wchar_t) + ); + } + } } } else { - if (bChoice) + if (bChoice || bChoiceLefted) { RECT rcTemp; rcTemp = rcText; @@ -958,7 +1041,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt) DT_CALCRECT ); POINT p; - p.x = rcText.left + rcTemp.right - rcTemp.left; + p.x = rcText.left + (bChoiceLefted ? 0 : (rcTemp.right - rcTemp.left)); p.y = rcText.bottom; ClientToScreen( hwnd, @@ -998,7 +1081,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt) { RegCloseKey(hKey); } - if (bChoice) + if (bChoice || bChoiceLefted) { for (unsigned int i = 0; i < numChoices; ++i) { @@ -1015,7 +1098,24 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt) DestroyMenu(hMenu); } } - if (!hDC && !strncmp(line, ";l ", 3)) + if (hDC && (!strncmp(line, ";l ", 3) || !strncmp(line, ";y ", 3))) + { + RECT rcTemp; + rcTemp = rcText; + DrawTextW( + hdcPaint, + text, + 3, + &rcTemp, + DT_CALCRECT + ); + rcText.left += (!strncmp(line, ";l ", 3) ? (rcTemp.right - rcTemp.left) : 0); + for (unsigned int i = 0; i < wcslen(text); ++i) + { + text[i] = text[i + 3]; + } + } + if (!hDC && (!strncmp(line, ";l ", 3) || !strncmp(line, ";y ", 3))) { RECT rcTemp; rcTemp = rcText; @@ -1037,14 +1137,52 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt) if (p) *p = 0; if (line[1] != 0) { - ShellExecuteA( - NULL, - "open", - line + 1, - NULL, - NULL, - SW_SHOWNORMAL - ); + if (line[1] == ';') + { + if (!strcmp(line + 2, ";EP_CHECK_FOR_UPDATES")) + { + HANDLE hEvent = CreateEventW(NULL, FALSE, FALSE, L"EP_Ev_CheckForUpdates_" _T(EP_CLSID)); + if (hEvent) + { + if (GetLastError() != ERROR_ALREADY_EXISTS) + { + CloseHandle(hEvent); + } + else + { + SetEvent(hEvent); + CloseHandle(hEvent); + } + } + } + else if(!strcmp(line + 2, ";EP_INSTALL_UPDATES")) + { + HANDLE hEvent = CreateEventW(NULL, FALSE, FALSE, L"EP_Ev_InstallUpdates_" _T(EP_CLSID)); + if (hEvent) + { + if (GetLastError() != ERROR_ALREADY_EXISTS) + { + CloseHandle(hEvent); + } + else + { + SetEvent(hEvent); + CloseHandle(hEvent); + } + } + } + } + else + { + ShellExecuteA( + NULL, + "open", + line + 1, + NULL, + NULL, + SW_SHOWNORMAL + ); + } } } } @@ -1379,6 +1517,13 @@ static LRESULT CALLBACK GUI_WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPAR __declspec(dllexport) int ZZGUI(HWND hWnd, HINSTANCE hInstance, LPSTR lpszCmdLine, int nCmdShow) { + HWND hOther = NULL; + if (hOther = FindWindowW(L"ExplorerPatcher_GUI_" _T(EP_CLSID), NULL)) + { + SetForegroundWindow(hOther); + return 0; + } + HKEY hKey = NULL; DWORD dwDisposition; DWORD dwSize = sizeof(DWORD); @@ -1509,7 +1654,7 @@ __declspec(dllexport) int ZZGUI(HWND hWnd, HINSTANCE hInstance, LPSTR lpszCmdLin wc.lpfnWndProc = GUI_WindowProc; wc.hbrBackground = _this.hBackgroundBrush; wc.hInstance = hModule; - wc.lpszClassName = L"ExplorerPatcherGUI"; + wc.lpszClassName = L"ExplorerPatcher_GUI_" _T(EP_CLSID); wc.hCursor = LoadCursorW(NULL, IDC_ARROW); HMODULE hShell32 = LoadLibraryExW(wszPath, NULL, LOAD_LIBRARY_AS_DATAFILE); if (hShell32) @@ -1569,7 +1714,7 @@ __declspec(dllexport) int ZZGUI(HWND hWnd, HINSTANCE hInstance, LPSTR lpszCmdLin } HWND hwnd = CreateWindowEx( NULL, - L"ExplorerPatcherGUI", + L"ExplorerPatcher_GUI_" _T(EP_CLSID), title, WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX, 0, @@ -1582,6 +1727,7 @@ __declspec(dllexport) int ZZGUI(HWND hWnd, HINSTANCE hInstance, LPSTR lpszCmdLin { return 1; } + if (IsThemeActive()) { if (bIsCompositionEnabled) diff --git a/ExplorerPatcher/settings.reg b/ExplorerPatcher/settings.reg index d093f5e..e87baa5 100644 --- a/ExplorerPatcher/settings.reg +++ b/ExplorerPatcher/settings.reg @@ -4,11 +4,13 @@ ;T Taskbar [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] -;b Enable Windows 10 taskbar * +;z 2 Taskbar style * +;x 0 Windows 11 (default) +;x 1 Windows 10 "OldTaskbar"=dword:00000001 -;t The following settings only apply to the Windows 10 taskbar: -;l Enable missing system tray icons -;shell:::{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}\SystemIcons +;y More taskbar options in the Settings app 🡕 +;ms-settings:taskbar +;t The following additional settings only apply to the Windows 10 taskbar: [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced] ;c 3 Combine taskbar icons on main taskbar ;x 0 Always combine @@ -41,11 +43,13 @@ [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced] ;b Show Desktop button "TaskbarSD"=dword:00000001 -;t +[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] +;b Add shortcut to program settings in Win+X menu +"PropertiesInWinX"=dword:00000001 ;t ;T System tray -;l Enable missing system tray icons +;y Enable missing system tray icons 🡕 ;shell:::{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}\SystemIcons [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced] ;b Show seconds in the clock @@ -107,29 +111,31 @@ ;d Disable the Windows 11 context menu * @="" [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] -;i Use immersive menus when displaying Windows 10 context menus +;i Use immersive menus when displaying Windows 10 context menus ** "DisableImmersiveContextMenu"=dword:00000000 [-HKEY_CURRENT_USER\Software\Classes\CLSID\{056440FD-8568-48e7-A632-72157243B55B}\InprocServer32] -;d Disable navigation bar +;d Disable navigation bar ** @="" [-HKEY_CURRENT_USER\Software\Classes\CLSID\{1d64637d-31e9-4b06-9124-e83fb178ac6e}\TreatAs] ;d Disable modern search bar @="{64bc32b5-4eec-4de7-972d-bd8bd0324537}" [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] -;b Hide search bar completely +;b Hide search bar completely ** "HideExplorerSearchBar"=dword:00000000 ;p 2 ;b Mica effect on title bar "MicaEffectOnTitlebar"=dword:00000000 -[-HKEY_CURRENT_USER\Software\Classes\CLSID\{1eeb5b5a-06fb-4732-96b3-975c0194eb39}\InprocServer32] -;d Enable legacy list view * -@="" +[-HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{D17F1E1A-5919-4427-8F89-A1A8503CA3EB}\InprocServer32] +;d Register as shell extension +@="{64bc32b5-4eec-4de7-972d-bd8bd0324537}" + +;t ________________________ +;e For the settings marked with (**) to work in Open/Save file dialogs as well, register this +;e utility as shell extension using the option above. +;y Learn more 🡕 +;https://github.com/valinet/ExplorerPatcher/wiki/Using-ExplorerPatcher-as-shell-extension ;T Start menu -[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] -;b Enable Start menu support -"HookStartMenu"=dword:00000001 -;t The following settings only work when the above is enabled: [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StartPage] ;i Open Start on monitor containing the cursor "MonitorOverride"=dword:00000001 @@ -137,11 +143,6 @@ "OpenAtLogon"=dword:00000000 ;b Open Start in All apps by default "MakeAllAppsDefault"=dword:00000000 -[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced] -;c 2 Location on screen -;x 0 Left -;x 1 Center (default) -"TaskbarAl"=dword:00000001 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] ;c 22 Maximum number of frequent apps to show ;x 0 None @@ -167,10 +168,16 @@ ;x 20 20 ;x 99999 Unlimited "Start_MaximumFrequentApps"=dword:00000006 +[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced] +;c 2 Position on screen +;x 0 Left +;x 1 Center (default) +"TaskbarAl"=dword:00000001 + ;T Window switcher [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer] -;c 3 Window switcher (Alt+Tab) style * +;z 3 Window switcher (Alt+Tab) style * ;x 0 Windows 11 ;x 2 Windows 10 ;x 1 Windows NT @@ -276,6 +283,7 @@ ;x 500 500 ms "ShowDelay"=dword:00000064 + ;T Other [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] ;b Open clock flyout when pressing Win+C instead of Microsoft Teams @@ -292,9 +300,28 @@ ;b Show Command Prompt instead of PowerShell in Win+X menu * "DontUsePowerShellOnWinX"=dword:00000000 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] -;b Remove shortcut key from menu item +;b Remove shortcut key from program settings item in Win+X menu "NoMenuAccelerator"=dword:00000000 + +;T Updates +[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] +;z 3 When File Explorer starts +;x 1 Notify about available updates (default) +;x 0 Prompt to install available updates +;x 2 Do not check for updates +"UpdatePolicy"=dword:00000001 +;t ________________________ +;y Check for updates +;;;EP_CHECK_FOR_UPDATES +;y Install latest version +;;;EP_INSTALL_UPDATES +;y Read about changes in the latest releases 🡕 +;https://github.com/valinet/ExplorerPatcher/blob/master/CHANGELOG.md +;y Learn more 🡕 +;https://github.com/valinet/ExplorerPatcher/wiki/Configure-updates + + ;T Advanced ;t Only change these settings if you know what you are doing. You've been warned! [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] @@ -302,6 +329,18 @@ "AllocConsole"=dword:00000000 ;b Dump memory leaks "Memcheck"=dword:00000000 +[HKEY_CURRENT_USER\Control Panel\Desktop] +;b Show Windows build info on the desktop * +"PaintDesktopversion"=dword:00000000 +[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] +;b Enable advanced mitigations for correct rendering using classic theme * +"ClassicThemeMitigations"=dword:00000000 +[-HKEY_CURRENT_USER\Software\Classes\CLSID\{1eeb5b5a-06fb-4732-96b3-975c0194eb39}\InprocServer32] +;d Enable SysListView32 for Explorer views * +@="" +[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] +;i Do not hook Start menu from main Explorer process (permanently disabled) * +"HookStartMenu"=dword:00000001 ;c 12 Supplimentary delay at logon * ;x 0 None (default) ;x 300 300 ms @@ -316,14 +355,9 @@ ;x 8000 8 seconds ;x 10000 10 seconds "ExplorerReadyDelay"=dword:00000000 -[HKEY_CURRENT_USER\Control Panel\Desktop] -;b Show Windows build info on the desktop * -"PaintDesktopversion"=dword:00000000 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] -;b Enable advanced mitigations for correct rendering using classic theme * -"ClassicThemeMitigations"=dword:00000000 ;a Only change the following option if you have a single taskbar !!! -;c 21 Always show main taskbar on this monitor * (experimental) +;c 21 Always show main taskbar on this monitor * (not working) ;x 0 Primary (default) ;x 1 1 ;x 2 2 @@ -346,6 +380,10 @@ ;x 19 19 ;x 20 20 "TaskbarMonitorOverride"=dword:00000000 +;t ________________________ +;e Only change these settings after reading the documentation about them. +;y Learn more 🡕 +;https://github.com/valinet/ExplorerPatcher/wiki/About-advanced-settings ;T About @@ -355,14 +393,16 @@ ;e ;e This project aims to bring back a productive working environment on Windows 11. ;t Proudly programmed by Valentin-Gabriel Radu. -;l Visit project GitHub (https://github.com/valinet) +;y Visit project GitHub (https://github.com/valinet) 🡕 ;https://github.com/valinet -;l Visit web site (https://www.valinet.ro) +;y Visit web site (https://www.valinet.ro) 🡕 ;https://www.valinet.ro -;l E-mail author (valentingabrielradu@gmail.com) +;y E-mail author (valentingabrielradu@gmail.com) 🡕 ;mailto:valentingabrielradu@gmail.com -;l Donate (using PayPal) +;y Donate (using PayPal) 🡕 ;https://www.paypal.com/donate?business=valentingabrielradu%40gmail.com&no_recurring=0&item_name=ExplorerPatcher¤cy_code=EUR +;y Frequently Asked Questions 🡕 +;https://github.com/valinet/ExplorerPatcher/wiki/Frequently-asked-questions ;f ;t Settings marked with an (*) require restarting File Explorer.