From 1bbe207c83953b1ee3af3b7f07d51e3cc7df4090 Mon Sep 17 00:00:00 2001 From: Amrsatrio Date: Sat, 6 Sep 2025 02:53:54 +0700 Subject: [PATCH] Taskbar10: Fix TrayThreadBSTA (54481602) taskbar thread flags for compatibility with taskbar toolbars --- ExplorerPatcher/dllmain.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/ExplorerPatcher/dllmain.c b/ExplorerPatcher/dllmain.c index 6ca7a16..7716851 100644 --- a/ExplorerPatcher/dllmain.c +++ b/ExplorerPatcher/dllmain.c @@ -10226,6 +10226,24 @@ void PatchPnidui(HMODULE hPnidui) #endif #pragma endregion + +#pragma region "Fix TrayThreadBSTA (54481602) taskbar thread flags for compatibility with taskbar toolbars" +#if WITH_MAIN_PATCHER +BOOL STDAPICALLTYPE explorer_SHCreateThread( + LPTHREAD_START_ROUTINE pfnThreadProc, void* pData, SHCT_FLAGS flags, LPTHREAD_START_ROUTINE pfnCallback) +{ + static BOOL bPatched; + if (!bPatched && flags == CTF_THREAD_REF | CTF_REF_COUNTED | CTF_NOADDREFLIB) + { + bPatched = TRUE; + flags |= CTF_COINIT_STA | CTF_OLEINITIALIZE; // Add back the removed flags + } + return SHCreateThread(pfnThreadProc, pData, flags, pfnCallback); +} +#endif +#pragma endregion + + DWORD Inject(BOOL bIsExplorer) { #if defined(DEBUG) | defined(_DEBUG) @@ -10676,6 +10694,10 @@ DWORD Inject(BOOL bIsExplorer) VnPatchIAT(hExplorer, "user32.dll", "SetWindowCompositionAttribute", explorer_SetWindowCompositionAttribute); } } + if (global_rovi.dwBuildNumber >= 26100) + { + VnPatchIAT(hExplorer, "api-ms-win-shcore-thread-l1-1-0.dll", "SHCreateThread", explorer_SHCreateThread); + } } if (IsWindows11()) {