diff --git a/CHANGELOG.md b/CHANGELOG.md index b198f6d..fe32e49 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,39 @@ This document includes the same release notes as in the [Releases](https://github.com/valinet/ExplorerPatcher/releases) section on GitHub. +## 22000.348.40 + +Tested on build 22000.348. + +#### Highlights + +* Primary taskbar remembers position when moved to a secondary monitor (multiple issues, like #504) +* Ability to set Control Center as network icon action (merged #492) +* Added possibility to use the original Windows 10 (Alt-Tab) window switcher; thus, the available options are now: + * Windows 11 switcher - full screeen, slow, tiny selection outline, slow opening times + * Windows 10 switcher - pretty good but lacks customization options + * Windows NT switcher - the classic simple icon-based interface hosted by `csrss` + * Simple Window Switcher - my own take on implementing this kind of functionality +* Registry access in the "Properties" GUI is now virtualized; that means, the same lightweight infrastructure is maintained but more complex behaviors can be offered via the improved backend; as such, this version introduces the following new configuration options: + * Primary and secondary taskbar placement + * Automatically hide the taskbar +* Proper activation of the "Properties" window when another instance is running and minimized +* Symbols parsing success notification displays for longer +* Debug builds are clearly indicated in the "About" page of "Properties" +* Fixed solution to properly produce a debug setup program + +#### Simple Window Switcher + +* Dramatically improved performance, refactored application; switched to building the window lists faster, on demand, so that the proper windows are always displayed (as far as I remember, the latest `IsAltTabWindow` is based on a function called `IsTaskedWindow` ripped straight from AltTab.dll from Windows 7 6.1.7600.16385) +* Proper history of window activations is maintained internally +* Implemented support for layered windows, thus making transparency possible when using the default theme (Acrylic and Mica brushes are still available, but those have the disadvantage that the system can disable them in certain scenarios, like saving energy when working on battery power) +* Improved reliability of startup delay and window dismiss when quickly Alt-Tabbing +* Window icons are retrieved async now +* Better icon drawing using GDI+ flat API +* Reversed UWP apps detection to checking whether the executable is called ApplicationFrameHost.exe +* Added some more debug messages +* Fixed some rendering problems when themes are disabled + ## 22000.348.39 Tested on build 22000.348. diff --git a/ExplorerPatcher/ExplorerPatcher.rc b/ExplorerPatcher/ExplorerPatcher.rc index bf2cbfe..c53ed63 100644 --- a/ExplorerPatcher/ExplorerPatcher.rc +++ b/ExplorerPatcher/ExplorerPatcher.rc @@ -72,7 +72,7 @@ BEGIN VALUE "FileDescription", "ExplorerPatcher" VER_FILE_STRING VALUE "InternalName", "ExplorerPatcher.dll" - VALUE "LegalCopyright", "Copyright (C) 2006-2021 VALINET Solutions SRL. All rights reserved." + VALUE "LegalCopyright", "Copyright (C) 2006-2022 VALINET Solutions SRL. All rights reserved." VALUE "OriginalFilename", "ExplorerPatcher.dll" VALUE "ProductName", "ExplorerPatcher" VER_PRODUCT_STRING diff --git a/ExplorerPatcher/ExplorerPatcher.vcxproj b/ExplorerPatcher/ExplorerPatcher.vcxproj index 02665f6..1979069 100644 --- a/ExplorerPatcher/ExplorerPatcher.vcxproj +++ b/ExplorerPatcher/ExplorerPatcher.vcxproj @@ -205,10 +205,15 @@ true true + + true + true + true true + true true @@ -217,6 +222,7 @@ true + true true @@ -282,7 +288,9 @@ + + diff --git a/ExplorerPatcher/ExplorerPatcher.vcxproj.filters b/ExplorerPatcher/ExplorerPatcher.vcxproj.filters index 2c72f79..e13a797 100644 --- a/ExplorerPatcher/ExplorerPatcher.vcxproj.filters +++ b/ExplorerPatcher/ExplorerPatcher.vcxproj.filters @@ -117,6 +117,12 @@ Header Files + + Header Files\sws + + + Header Files\sws + @@ -190,6 +196,12 @@ Source Files + + Source Files\sws + + + Source Files\sws + diff --git a/ExplorerPatcher/GUI.c b/ExplorerPatcher/GUI.c index 2f26161..d71324f 100644 --- a/ExplorerPatcher/GUI.c +++ b/ExplorerPatcher/GUI.c @@ -25,6 +25,195 @@ BOOL IsColorSchemeChangeMessage(LPARAM lParam) return is; } +LSTATUS GUI_RegSetValueExW( + HKEY hKey, + LPCWSTR lpValueName, + DWORD Reserved, + DWORD dwType, + const BYTE* lpData, + DWORD cbData +) +{ + if (wcsncmp(lpValueName, L"Virtualized_" _T(EP_CLSID), 50)) + { + return RegSetValueExW(hKey, lpValueName, 0, dwType, lpData, cbData); + } + if (!wcscmp(lpValueName, L"Virtualized_" _T(EP_CLSID) L"_TaskbarPosition")) + { + StuckRectsData srd; + DWORD pcbData = sizeof(StuckRectsData); + RegGetValueW( + HKEY_CURRENT_USER, + L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\StuckRectsLegacy", + 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; + RegSetKeyValueW( + HKEY_CURRENT_USER, + L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\StuckRectsLegacy", + L"Settings", + REG_BINARY, + &srd, + sizeof(StuckRectsData) + ); + return ERROR_SUCCESS; + } + return ERROR_ACCESS_DENIED; + } + else if (!wcscmp(lpValueName, L"Virtualized_" _T(EP_CLSID) L"_MMTaskbarPosition")) + { + HKEY hKey = NULL; + RegOpenKeyExW( + HKEY_CURRENT_USER, + L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MMStuckRectsLegacy", + 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; + pcbData = sizeof(StuckRectsData); + RegSetKeyValueW( + HKEY_CURRENT_USER, + L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MMStuckRectsLegacy", + name, + REG_BINARY, + &srd, + sizeof(StuckRectsData) + ); + wprintf(L"name: %s\n", name); + } + RegCloseKey(hKey); + SendNotifyMessageW(HWND_BROADCAST, WM_WININICHANGE, 0, (LPARAM)L"TraySettings"); + return ERROR_SUCCESS; + } + return ERROR_ACCESS_DENIED; + } + else if (!wcscmp(lpValueName, L"Virtualized_" _T(EP_CLSID) L"_AutoHideTaskbar")) + { + APPBARDATA abd; + abd.cbSize = sizeof(APPBARDATA); + abd.lParam = *(DWORD*)lpData; + SHAppBarMessage(ABM_SETSTATE, &abd); + return ERROR_SUCCESS; + } +} + +LSTATUS GUI_RegQueryValueExW( + HKEY hKey, + LPCWSTR lpValueName, + LPDWORD lpReserved, + LPDWORD lpType, + LPBYTE lpData, + LPDWORD lpcbData +) +{ + if (wcsncmp(lpValueName, L"Virtualized_" _T(EP_CLSID), 50)) + { + return RegQueryValueExW(hKey, lpValueName, lpReserved, lpType, lpData, lpcbData); + } + if (!wcscmp(lpValueName, L"Virtualized_" _T(EP_CLSID) L"_TaskbarPosition")) + { + StuckRectsData srd; + DWORD pcbData = sizeof(StuckRectsData); + RegGetValueW( + HKEY_CURRENT_USER, + L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\StuckRectsLegacy", + L"Settings", + REG_BINARY, + NULL, + &srd, + &pcbData); + if (pcbData == sizeof(StuckRectsData) && srd.pvData[0] == sizeof(StuckRectsData) && srd.pvData[1] == -2) + { + *(DWORD*)lpData = srd.pvData[3]; + return ERROR_SUCCESS; + } + return ERROR_ACCESS_DENIED; + } + else if (!wcscmp(lpValueName, L"Virtualized_" _T(EP_CLSID) L"_MMTaskbarPosition")) + { + HKEY hKey = NULL; + RegOpenKeyExW( + HKEY_CURRENT_USER, + L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MMStuckRectsLegacy", + REG_OPTION_NON_VOLATILE, + KEY_READ | KEY_WRITE, + &hKey + ); + if (hKey) + { + WCHAR name[60]; + DWORD szName = 60; + StuckRectsData srd; + DWORD pcbData = sizeof(StuckRectsData); + RegEnumValueW( + hKey, + 0, + name, + &szName, + 0, + NULL, + &srd, + &pcbData + ); + if (pcbData == sizeof(StuckRectsData) && srd.pvData[0] == sizeof(StuckRectsData) && srd.pvData[1] == -2) + { + *(DWORD*)lpData = srd.pvData[3]; + RegCloseKey(hKey); + return ERROR_SUCCESS; + } + RegCloseKey(hKey); + } + return ERROR_ACCESS_DENIED; + } + else if (!wcscmp(lpValueName, L"Virtualized_" _T(EP_CLSID) L"_AutoHideTaskbar")) + { + APPBARDATA abd; + abd.cbSize = sizeof(APPBARDATA); + *(DWORD*)lpData = (SHAppBarMessage(ABM_GETSTATE, &abd) == ABS_AUTOHIDE); + return ERROR_SUCCESS; + } +} + static HRESULT GUI_AboutProc( HWND hwnd, UINT uNotification, @@ -409,7 +598,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt) { if (!strncmp(line, ";t ", 3) || !strncmp(line, ";e ", 3) || !strncmp(line, ";a ", 3)) { - char* p = strstr(line, "%VERSIONINFO%"); + char* p = strstr(line, "%VERSIONINFORMATIONSTRING%"); if (p) { DWORD dwLeftMost = 0; @@ -419,7 +608,13 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt) QueryVersionInfo(hModule, VS_VERSION_INFO, &dwLeftMost, &dwSecondLeft, &dwSecondRight, &dwRightMost); - sprintf_s(p, MAX_PATH, "%d.%d.%d.%d", dwLeftMost, dwSecondLeft, dwSecondRight, dwRightMost); + sprintf_s(p, MAX_PATH, "%d.%d.%d.%d%s", dwLeftMost, dwSecondLeft, dwSecondRight, dwRightMost, +#if defined(DEBUG) | defined(_DEBUG) + " (Debug)" +#else + "" +#endif + ); } } ZeroMemory(text, (MAX_LINE_LENGTH + 3) * sizeof(wchar_t)); @@ -882,7 +1077,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt) { hKey = NULL; } - RegQueryValueExW( + GUI_RegQueryValueExW( hKey, name, 0, @@ -1080,7 +1275,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt) { wchar_t* p = wcschr(d + 2, L'"'); if (p) *p = 0; - RegSetValueExW( + GUI_RegSetValueExW( hKey, !wcsncmp(name, L"@", 1) ? NULL : name, 0, @@ -1135,7 +1330,7 @@ static BOOL GUI_Build(HDC hDC, HWND hwnd, POINT pt) { value = _this->section + 1; } - RegSetValueExW( + GUI_RegSetValueExW( hKey, name, 0, diff --git a/ExplorerPatcher/dllmain.c b/ExplorerPatcher/dllmain.c index 8508a21..43eb4f7 100644 --- a/ExplorerPatcher/dllmain.c +++ b/ExplorerPatcher/dllmain.c @@ -3444,6 +3444,7 @@ DWORD WindowSwitcher(DWORD unused) while (TRUE) { + Sleep(5000); sws_ReadSettings(NULL); if (sws_IsEnabled) { @@ -3561,6 +3562,7 @@ void WINAPI LoadSettings(BOOL bIsExplorer) if (dwTemp) { #if defined(DEBUG) | defined(_DEBUG) + printf("[Memcheck] Dumping memory leaks...\n"); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDOUT); _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE); @@ -3568,6 +3570,7 @@ void WINAPI LoadSettings(BOOL bIsExplorer) _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDOUT); _CrtDumpMemoryLeaks(); + printf("[Memcheck] Memory leak dump complete.\n"); #endif dwTemp = 0; RegSetValueExW( diff --git a/ExplorerPatcher/settings.reg b/ExplorerPatcher/settings.reg index caebb91..e9a3f72 100644 --- a/ExplorerPatcher/settings.reg +++ b/ExplorerPatcher/settings.reg @@ -23,16 +23,30 @@ ;;x 1 Windows 11 ;;"OrbStyle"=dword:00000000 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced] -;c 3 Combine taskbar icons on main taskbar +;c 3 Combine taskbar icons on primary taskbar ;x 0 Always combine ;x 1 Combine when taskbar is full ;x 2 Never combine "TaskbarGlomLevel"=dword:00000002 -;c 3 Combine taskbar icons on other taskbars +;c 3 Combine taskbar icons on secondary taskbar(s) ;x 0 Always combine ;x 1 Combine when taskbar is full ;x 2 Never combine "MMTaskbarGlomLevel"=dword:00000002 +[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] +;c 4 Primary taskbar location on screen * +;x 3 Bottom (default) +;x 1 Top +;x 0 Left +;x 2 Right +"Virtualized_{D17F1E1A-5919-4427-8F89-A1A8503CA3EB}_TaskbarPosition"=dword:00000003 +;c 4 Secondary taskbar(s) location on screen +;x 3 Bottom (default) +;x 1 Top +;x 0 Left +;x 2 Right +"Virtualized_{D17F1E1A-5919-4427-8F89-A1A8503CA3EB}_MMTaskbarPosition"=dword:00000003 +[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced] ;c 2 Taskbar icon size ;x 1 Small ;x 0 Large (default) @@ -57,7 +71,9 @@ [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] ;b Show separators between toolbars * "ToolbarSeparators"=dword:00000000 - +[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] +;b Automatically hide the taskbar +"Virtualized_{D17F1E1A-5919-4427-8F89-A1A8503CA3EB}_AutoHideTaskbar"=dword:00000000 ;T System tray [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced] @@ -212,38 +228,44 @@ ;b Show windows only from current monitor "PerMonitor"=dword:00000000 ;c 3 Theme -;x 2 Mica (default) +;x 0 Default ;x 1 Acrylic -;x 0 None -"Theme"=dword:00000002 -;c 3 Corner preference -;x 2 Rounded (default) -;x 3 Small rounded -;x 1 Not rounded -"CornerPreference"=dword:00000002 -;c 3 Color scheme -;x 0 Follow system setting (default) -;x 1 Light -;x 2 Dark -"ColorScheme"=dword:00000000 +;x 2 Mica (always opaque) +"Theme"=dword:00000000 [HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MultitaskingView\AltTabViewHost] -;c 15 Opacity (works only with 'Acrylic' theme) +;c 19 Transparency ;x 100 Opaque -;x 95 95 % +;x 98 98 % +;x 96 96 % +;x 95 95 % (default) +;x 94 94 % +;x 92 92 % ;x 90 90 % ;x 85 85 % ;x 80 80 % ;x 75 75 % ;x 70 70 % ;x 65 65 % -;x 60 60 % (default) +;x 60 60 % ;x 55 55 % ;x 50 50 % ;x 45 45 % ;x 40 40 % ;x 35 35 % ;x 30 30 % -"Grid_backgroundPercent"=dword:0000003c +"Grid_backgroundPercent"=dword:0000005F +[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher\sws] +;c 3 Color scheme +;x 0 Follow system setting (default) +;x 1 Light +;x 2 Dark +"ColorScheme"=dword:00000000 +[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher\sws] +;c 3 Corner preference +;x 2 Rounded (default) +;x 3 Small rounded +;x 1 Not rounded +"CornerPreference"=dword:00000002 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher\sws] ;c 20 Row height ;x 330 330 pt @@ -291,19 +313,22 @@ ;x 60 60 % ;x 55 55 % "MaxHeight"=dword:00000050 -;c 10 Show delay +;c 11 Show delay ;x 0 None ;x 25 25 ms ;x 50 50 ms ;x 75 75 ms ;x 100 100 ms (default) +;x 125 125 ms ;x 150 150 ms ;x 200 200 ms ;x 300 300 ms ;x 400 400 ms ;x 500 500 ms "ShowDelay"=dword:00000064 - +;t ________________________ +;y Learn more about Simple Window Switcher 🡕 +;https://github.com/valinet/ExplorerPatcher/wiki/Simple-Window-Switcher ;T Other [HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ExplorerPatcher] @@ -394,7 +419,7 @@ ;T About ;e ExplorerPatcher -;e Version %VERSIONINFO% +;e Version %VERSIONINFORMATIONSTRING% ;t Copyright (C) 2006-2021 VALINET Solutions SRL. All rights reserved. ;e ;e This project aims to bring back a productive working environment on Windows 11. diff --git a/ExplorerPatcher/utility.h b/ExplorerPatcher/utility.h index d2b532a..efeecc0 100644 --- a/ExplorerPatcher/utility.h +++ b/ExplorerPatcher/utility.h @@ -78,6 +78,13 @@ DEFINE_GUID(CLSID_ImmersiveShell, 0x15, 0x63, 0x62, 0xa2, 0xf2, 0x39 ); +typedef struct _StuckRectsData +{ + int pvData[6]; + RECT rc; + POINT pt; +} StuckRectsData; + #pragma region "Weird stuff" INT64 STDMETHODCALLTYPE nimpl4_1(INT64 a1, DWORD* a2); INT64 STDMETHODCALLTYPE nimpl4_0(INT64 a1, DWORD* a2); diff --git a/ep_setup/ep_setup.rc b/ep_setup/ep_setup.rc index 2ea91ca..0359bd4 100644 --- a/ep_setup/ep_setup.rc +++ b/ep_setup/ep_setup.rc @@ -72,7 +72,7 @@ BEGIN VALUE "FileDescription", "ExplorerPatcher Setup Program" VER_FILE_STRING VALUE "InternalName", "ep_setup.exe" - VALUE "LegalCopyright", "Copyright (C) 2006-2021 VALINET Solutions SRL. All rights reserved." + VALUE "LegalCopyright", "Copyright (C) 2006-2022 VALINET Solutions SRL. All rights reserved." VALUE "OriginalFilename", "ep_setup.exe" VALUE "ProductName", "ExplorerPatcher" VER_PRODUCT_STRING diff --git a/ep_setup/ep_setup.vcxproj b/ep_setup/ep_setup.vcxproj index 70e682a..9b5c907 100644 --- a/ep_setup/ep_setup.vcxproj +++ b/ep_setup/ep_setup.vcxproj @@ -159,11 +159,32 @@ - + + true + true + + + true + true + - - + + true + true + + + true + true + + + true + true + + + true + true + diff --git a/ep_setup/ep_setup.vcxproj.filters b/ep_setup/ep_setup.vcxproj.filters index b7ab033..f11db67 100644 --- a/ep_setup/ep_setup.vcxproj.filters +++ b/ep_setup/ep_setup.vcxproj.filters @@ -34,6 +34,9 @@ Resource Files + + Resource Files + @@ -41,5 +44,7 @@ Resource Files + + \ No newline at end of file diff --git a/ep_setup/ep_setup_debug.rc b/ep_setup/ep_setup_debug.rc new file mode 100644 index 0000000..5bbe6b2 --- /dev/null +++ b/ep_setup/ep_setup_debug.rc @@ -0,0 +1,111 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// +#include "..\version.h" + +VS_VERSION_INFO VERSIONINFO + FILEVERSION VER_FILE + PRODUCTVERSION VER_PRODUCT + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "VALINET Solutions SRL" + VALUE "FileDescription", "ExplorerPatcher Setup Program (Debug Build)" + VER_FILE_STRING + VALUE "InternalName", "ep_setup.exe" + VALUE "LegalCopyright", "Copyright (C) 2006-2022 VALINET Solutions SRL. All rights reserved." + VALUE "OriginalFilename", "ep_setup.exe" + VALUE "ProductName", "ExplorerPatcher" + VER_PRODUCT_STRING + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// RCDATA +// + +IDR_EP_AMD64 RCDATA "..\\build\\Debug\\ExplorerPatcher.amd64.dll" + +IDR_EP_IA32 RCDATA "..\\build\\Debug\\ExplorerPatcher.IA-32.dll" + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/libs/libvalinet b/libs/libvalinet index ecbd725..860a41c 160000 --- a/libs/libvalinet +++ b/libs/libvalinet @@ -1 +1 @@ -Subproject commit ecbd725891f24bbdb06912f2caa98c82f0e94456 +Subproject commit 860a41c375e6278fc8c9408bd161c4114553b318 diff --git a/libs/sws b/libs/sws index 8df71a4..f0918b0 160000 --- a/libs/sws +++ b/libs/sws @@ -1 +1 @@ -Subproject commit 8df71a4f41b060f5d4abad34428e91d52f895c6f +Subproject commit f0918b0eaf79a9e72a6ee55d12bf2681eda41120 diff --git a/version.h b/version.h index 9f16008..a44a642 100644 --- a/version.h +++ b/version.h @@ -1,7 +1,7 @@ #define VER_MAJOR 22000 #define VER_MINOR 348 -#define VER_BUILD_HI 39 -#define VER_BUILD_LO 2 +#define VER_BUILD_HI 40 +#define VER_BUILD_LO 0 #define VER_FLAGS VS_FF_PRERELEASE @@ -12,5 +12,5 @@ #define VER_STR(arg) #arg // The String form of the version numbers -#define VER_FILE_STRING VALUE "FileVersion", "22000.348.39.2" -#define VER_PRODUCT_STRING VALUE "ProductVersion", "22000.348.39.2" +#define VER_FILE_STRING VALUE "FileVersion", "22000.348.40.0" +#define VER_PRODUCT_STRING VALUE "ProductVersion", "22000.348.40.0"