Skip to content

Commit 559c762

Browse files
authored
Taskbar minimize/restore on scroll v1.1.4 (#4550)
* Fixed compatibility with recent Windows 11 versions.
1 parent 3960e36 commit 559c762

1 file changed

Lines changed: 37 additions & 9 deletions

File tree

mods/taskbar-button-scroll.wh.cpp

Lines changed: 37 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// @id taskbar-button-scroll
33
// @name Taskbar minimize/restore on scroll
44
// @description Minimize/restore by scrolling the mouse wheel over taskbar buttons and thumbnail previews
5-
// @version 1.1.3
5+
// @version 1.1.4
66
// @author m417z
77
// @github https://github.com/m417z
88
// @twitter https://twitter.com/m417z
@@ -30,9 +30,6 @@ previews.
3030
Only Windows 10 64-bit and Windows 11 are supported. For older Windows versions
3131
check out [7+ Taskbar Tweaker](https://tweaker.ramensoftware.com/).
3232
33-
**Note:** To customize the old taskbar on Windows 11 (if using ExplorerPatcher
34-
or a similar tool), enable the relevant option in the mod's settings.
35-
3633
![Demonstration](https://i.imgur.com/rnnwOss.gif)
3734
*/
3835
// ==/WindhawkModReadme==
@@ -1085,13 +1082,13 @@ bool HookTaskbarViewDllSymbols(HMODULE module) {
10851082
FlyoutFrame_OnPointerWheelChanged_Original !=
10861083
TaskListButton_OnPointerWheelChanged_Original;
10871084

1088-
WindhawkUtils::Wh_SetFunctionHookT(
1085+
WindhawkUtils::SetFunctionHook(
10891086
TaskListButton_OnPointerWheelChanged_Original,
10901087
TaskListButton_OnPointerWheelChanged_Hook,
10911088
&TaskListButton_OnPointerWheelChanged_Original);
10921089

10931090
if (hookFlyoutFrame_OnPointerWheelChanged_Original) {
1094-
WindhawkUtils::Wh_SetFunctionHookT(
1091+
WindhawkUtils::SetFunctionHook(
10951092
FlyoutFrame_OnPointerWheelChanged_Original,
10961093
FlyoutFrame_OnPointerWheelChanged_Hook,
10971094
&FlyoutFrame_OnPointerWheelChanged_Original);
@@ -1217,11 +1214,13 @@ bool HookTaskbarSymbols() {
12171214
{LR"(public: virtual long __cdecl CTaskListWnd::DismissHoverUI(int))"},
12181215
&CTaskListWnd_DismissHoverUI_Original,
12191216
CTaskListWnd_DismissHoverUI_Hook,
1217+
true, // Classic thumbs, removed in or near 10.0.26100.8544.
12201218
},
12211219
{
12221220
{LR"(public: virtual int __cdecl CTaskListThumbnailWnd::ThumbIndexFromPoint(struct tagPOINT const &)const )"},
12231221
&CTaskListThumbnailWnd_ThumbIndexFromPoint_Original,
12241222
CTaskListThumbnailWnd_ThumbIndexFromPoint_Hook,
1223+
true, // Classic thumbs, removed in or near 10.0.26100.8544.
12251224
},
12261225
{
12271226
{LR"(protected: virtual __int64 __cdecl CTaskListWnd::v_WndProc(struct HWND__ *,unsigned int,unsigned __int64,__int64))"},
@@ -1231,15 +1230,20 @@ bool HookTaskbarSymbols() {
12311230
{
12321231
{LR"(private: void __cdecl CTaskListThumbnailWnd::_HandleContextMenu(struct tagPOINT,int))"},
12331232
&CTaskListThumbnailWnd__HandleContextMenu_Original,
1233+
nullptr,
1234+
true, // Classic thumbs, removed in or near 10.0.26100.8544.
12341235
},
12351236
{
12361237
{LR"(private: void __cdecl CTaskListThumbnailWnd::_RefreshThumbnail(int))"},
12371238
&CTaskListThumbnailWnd__RefreshThumbnail_Original,
1239+
nullptr,
1240+
true, // Classic thumbs, removed in or near 10.0.26100.8544.
12381241
},
12391242
{
12401243
{LR"(private: virtual __int64 __cdecl CTaskListThumbnailWnd::v_WndProc(struct HWND__ *,unsigned int,unsigned __int64,__int64))"},
12411244
&CTaskListThumbnailWnd_v_WndProc_Original,
12421245
CTaskListThumbnailWnd_v_WndProc_Hook,
1246+
true, // Classic thumbs, removed in or near 10.0.26100.8544.
12431247
},
12441248
// For offsets:
12451249
{
@@ -1272,6 +1276,30 @@ bool HookTaskbarSymbols() {
12721276
return false;
12731277
}
12741278

1279+
bool hasAllClassicThumbnailsHooks =
1280+
CTaskListWnd_DismissHoverUI_Original &&
1281+
CTaskListThumbnailWnd_ThumbIndexFromPoint_Original &&
1282+
CTaskListThumbnailWnd__HandleContextMenu_Original &&
1283+
CTaskListThumbnailWnd__RefreshThumbnail_Original &&
1284+
CTaskListThumbnailWnd_v_WndProc_Original;
1285+
1286+
bool hasNoClassicThumbnailsHooks =
1287+
!CTaskListWnd_DismissHoverUI_Original &&
1288+
!CTaskListThumbnailWnd_ThumbIndexFromPoint_Original &&
1289+
!CTaskListThumbnailWnd__HandleContextMenu_Original &&
1290+
!CTaskListThumbnailWnd__RefreshThumbnail_Original &&
1291+
!CTaskListThumbnailWnd_v_WndProc_Original;
1292+
1293+
if (!hasAllClassicThumbnailsHooks && !hasNoClassicThumbnailsHooks) {
1294+
Wh_Log(L"Some classic thumbnail hooks are missing (%p, %p, %p, %p, %p)",
1295+
CTaskListWnd_DismissHoverUI_Original,
1296+
CTaskListThumbnailWnd_ThumbIndexFromPoint_Original,
1297+
CTaskListThumbnailWnd__HandleContextMenu_Original,
1298+
CTaskListThumbnailWnd__RefreshThumbnail_Original,
1299+
CTaskListThumbnailWnd_v_WndProc_Original);
1300+
return false;
1301+
}
1302+
12751303
return true;
12761304
}
12771305

@@ -1553,9 +1581,9 @@ BOOL Wh_ModInit() {
15531581
HMODULE kernelBaseModule = GetModuleHandle(L"kernelbase.dll");
15541582
auto pKernelBaseLoadLibraryExW = (decltype(&LoadLibraryExW))GetProcAddress(
15551583
kernelBaseModule, "LoadLibraryExW");
1556-
WindhawkUtils::Wh_SetFunctionHookT(pKernelBaseLoadLibraryExW,
1557-
LoadLibraryExW_Hook,
1558-
&LoadLibraryExW_Original);
1584+
WindhawkUtils::SetFunctionHook(pKernelBaseLoadLibraryExW,
1585+
LoadLibraryExW_Hook,
1586+
&LoadLibraryExW_Original);
15591587

15601588
HMODULE dwmapiModule =
15611589
LoadLibraryEx(L"dwmapi.dll", nullptr, LOAD_LIBRARY_SEARCH_SYSTEM32);

0 commit comments

Comments
 (0)