// ==WindhawkMod== // @id classic-theme-windows // @name Classic Theme Windows // @description Forces Classic Theme on all Windows // @version 0.1 // @author Travis, Cynosphere // @include * // @exclude wininit.exe // @exclude winlogon.exe // @exclude taskmgr.exe // @exclude dwm.exe // @exclude C:\Windows\System32\*.scr // @exclude svchost.exe // @exclude taskhostw.exe // @exclude dllhost.exe // @exclude conhost.exe // @exclude sihost.exe // @exclude lsass.exe // @exclude C:\Program Files (x86)\Steam\* // @exclude Code.exe // @exclude Code - Insiders.exe // @exclude msedge.exe // @exclude vmware.exe // @exclude vmware-vmx.exe // @exclude rundll32.exe // @exclude Spotify.exe // @exclude smartscreen.exe // @exclude RuntimeBroker.exe // @exclude ApplicationFrameHost.exe // @exclude SystemSettings.exe // @exclude SecHealthUI.exe // @exclude SecurityHealthHost.exe // @exclude PhoneExperienceHost.exe // @exclude SecurityHealthTray.exe // @exclude Window Detective.exe // @compilerOptions -luxtheme -ldwmapi // ==/WindhawkMod== // ==WindhawkModReadme== /* # Classic Theme Windows Forces Classic Theme on all Windows */ // ==/WindhawkModReadme== #include #include #include static const int DisableDWM = DWMNCRP_DISABLED; static const int EnableDWM = DWMNCRP_ENABLED; void BasicThemerEnable(HWND hwnd) { DwmSetWindowAttribute(hwnd, DWMWA_NCRENDERING_POLICY, &DisableDWM, sizeof(int)); } void BasicThemerDisable(HWND hwnd) { DwmSetWindowAttribute(hwnd, DWMWA_NCRENDERING_POLICY, &EnableDWM, sizeof(int)); } using CreateWindowExW_t = decltype(&CreateWindowExW); CreateWindowExW_t CreateWindowExW_Orig; HWND WINAPI CreateWindowExW_Hook(DWORD dwExStyle,LPCWSTR lpClassName,LPCWSTR lpWindowName,DWORD dwStyle,int X,int Y,int nWidth,int nHeight,HWND hWndParent,HMENU hMenu,HINSTANCE hInstance,LPVOID lpParam) { HWND res = CreateWindowExW_Orig(dwExStyle,lpClassName,lpWindowName,dwStyle,X,Y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam); BasicThemerEnable(res); return res; } using CreateWindowExA_t = decltype(&CreateWindowExA); CreateWindowExA_t CreateWindowExA_Orig; HWND WINAPI CreateWindowExA_Hook(DWORD dwExStyle,LPCSTR lpClassName,LPCSTR lpWindowName,DWORD dwStyle,int X,int Y,int nWidth,int nHeight,HWND hWndParent,HMENU hMenu,HINSTANCE hInstance,LPVOID lpParam) { HWND res = CreateWindowExA_Orig(dwExStyle,lpClassName,lpWindowName,dwStyle,X,Y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam); BasicThemerEnable(res); return res; } BOOL CALLBACK EnableBasicThemerForAll(HWND hWnd, LPARAM lParam) { BasicThemerEnable(hWnd); return TRUE; } BOOL CALLBACK DisableBasicThemerForAll(HWND hWnd, LPARAM lParam) { BasicThemerDisable(hWnd); return TRUE; } BOOL Wh_ModInit() { //Wh_Log(L"Init"); //Wh_Log(L"Theme properties were: 0x%x", GetThemeAppProperties()); SetThemeAppProperties(0); //Wh_Log(L"Theme properties are: 0x%x", GetThemeAppProperties()); Wh_SetFunctionHook((void*)CreateWindowExW, (void*)CreateWindowExW_Hook, (void**)&CreateWindowExW_Orig); Wh_SetFunctionHook((void*)CreateWindowExA, (void*)CreateWindowExA_Hook, (void**)&CreateWindowExA_Orig); DWORD thisPid = GetProcessIdOfThread(GetCurrentThread()); EnumWindows(EnableBasicThemerForAll, thisPid); return TRUE; } void Wh_ModUninit() { //Wh_Log(L"Uninit"); //Wh_Log(L"Theme properties were: 0x%x", GetThemeAppProperties()); if (GetThemeAppProperties() == 0) { SetThemeAppProperties(3); } //Wh_Log(L"Theme properties are: 0x%x", GetThemeAppProperties()); DWORD thisPid = GetProcessIdOfThread(GetCurrentThread()); EnumWindows(DisableBasicThemerForAll, thisPid); }