|
Post by anixx on Jun 8, 2016 3:36:33 GMT -8
This is a method of switching to Classic Theme without using resident programs. I currently use the ClassicThemeTray.exe but any program that enables classic theme can be used. The steps: 1. Put ClassicThemeTray.exe into C:\Classic 2. Import the following reg file: Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] "Userinit"=schtasks.exe /run /tn "Classic"
3. Create in task sheduler the task named "Classic" with admin rights with the following commands: C:\Classic\ClassicThemeTray.exe /enable schtasks.exe /run /tn "Classic2"
4. Create another task named "Classic2" with normal rights with the following command: cmd /c start userinit.exe You can make the both tasks hidden. The both should be set up to run only for logged in users. Make sure you marked them to run with any power source on a laptop. 5. Import the following reg file: Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM] "Composition"=dword:00000000 "ColorizationGlassAttribute"=dword:00000000 "EnableAeroPeek"=dword:00000000 "AlwaysHibernateThumbnails"=dword:00000000 "ColorizationColor"=dword:ff000000 "ColorizationColorBalance"=dword:00000064 "ColorizationAfterglow"=dword:d9000000 "ColorizationAfterglowBalance"=dword:0000000a "ColorizationBlurBalance"=dword:fffffff6 "EnableWindowColorization"=dword:00000001 "ColorizationOpaqueBlend"=dword:00000000
6. In the personalization settings move the three color bottom sliders to the left while the top one to the right. 7. Put the following exe file to the autostart folder or the registry key "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run": fixstrips.7z (420.52 KB). You can do the letter by putting fixstrips.exe to the C:\Classic folder and importing the following reg file: Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] "Fixstrips"="C:\\Classic\\fixstrips.exe"
8. If you are using Classic Shell greater than 4.3.0, disable the transparency of the taskbar. You can do it via settings dialog or importing this reg file: Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\IvoSoft\ClassicStartMenu\Settings] "TaskbarLook"="Opaque" 9. Delete (or rename) the Registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\DefaultColors Tested under Windows 8.1 10. Optionally use the userpreferencemask calculator, bit 17 to make the menu boders 3D-looking www.winclassic.net/thread/120/classic-theme-adjusting-upmcalc-borderSome issues:- When using newer Classic Shell, switching tabs in the taskbar Classic Shell properties or closing the dialog leads to the black stripes reappearing. Need to start fixstripes again after closing Classic Shell properties. Not the case any more with Classic Shell greater than 4.3.0. The black strips only re-appear if to change the start button icon. - Under newer Classic Shell the start button is still too close to the quicklaunch (1px). Still better than under ClassicTheme install mode (there was no space at all). Can be worked around by adding an empty QuickLaunch bar. - Pressing Ctrl-Alt-Del and returning from the system menu changes the color scheme. Fix has been found, the last step in this instruction fixes the issue. - The hung windows invariably have black border, the caption text is hardly visible (there is a workaround, see below!). PS. Instead of steps 5 and 6, one can use this utility www.glass8.eu/files/SetWindowCompositionAttribute.7z the following way: SetWindowCompositionAttribute.exe class Shell_TrayWnd blur false after fixstrips.exe If this method is used, the hung windows captions can be customized to any color (not only black).
|
|
|
Post by anixx on Jun 25, 2016 18:31:57 GMT -8
I made 2 tasks.
First one, with admin rights, runs the following commands:
C:\Classic\ClassicThemeA.exe schtasks.exe /run /tn "Classic2"
The second command is the shortcut to the second task, with normal rights. The second task runs explorer:
cmd /c start explorer.exe
The first task is invoked from registry instead of userinit:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] "Userinit"=schtasks.exe /run /tn "Classic"
After explorer loads, the autostart folder runs fixstrip.exe.
This way the classic theme works well. The two issues though:
* Color theme changes after pressing Ctrl+Alt+Del
* Blck strips reappear when changing Classic nShell properties (runninf fixstrip second time fixes it).
|
|
|
Post by qwerty12 on Jun 28, 2016 4:11:53 GMT -8
* Color theme changes after pressing Ctrl+Alt+Del Delete the Registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\DefaultColors. (Credits to Mr. GRiM) * Blck strips reappear when changing Classic nShell properties (runninf fixstrip second time fixes it). Workaround idea: In your AutoHotkey script, use a shellhook to store the hwnd of the Classic Shell settings window when it appears and then when your message handler receives HSHELL_WINDOWDESTROYED, compare HWNDs and have the script rerun fixstrip automatically.
|
|
|
Post by anixx on Jun 28, 2016 13:02:19 GMT -8
> Delete the Registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\DefaultColors. (Credits to Mr. GRiM)
Great! This indeed works!
> Workaround idea: In your AutoHotkey script, use a shellhook to store the hwnd of the Classic Shell settings window when it appears and then when your message handler receives HSHELL_WINDOWDESTROYED, compare HWNDs and have the script rerun fixstrip automatically.
This would work but this would require a resident AHK script. This would nullify the main advantage of this method (no resident programs). And this is not an important issue (one rarely needs to go to Classic Shell property sheet).
|
|
|
Post by qwerty12 on Jun 28, 2016 15:13:55 GMT -8
This would work but this would require a resident AHK script. This would nullify the main advantage of this method (no resident programs). And this is not an important issue (one rarely needs to go to Classic Shell property sheet). Ah, yeah, that makes sense.
Personally, I'm looking to combine your method with some of the tricks w8classic performs (which requires a resident component of some sort) so that I can do away with some of the (as you already noted) processor-time consuming hacks w8classic performs currently, but still keep the compatibility hacks it performs, like calling SetProcessDPIAware in every process (though without ClassicTheme.exe scanning for new processes every two seconds). Since we can workaround C-A-D messing up the colours by deleting that Registry key, there's no need for the ClassicTheme service to save the colours locally and create a new thread in Explorer.exe to monitor the desktop switching. Replacing dwmapi.dll as w8classic currently does won't survive Windows Update. I'm hoping AppInit_DLLs with a DLL that just hooks dwmapi functions works instead. I'm currently working my way through this to produce a small program that just closes the ThemeSection handle. (I know ClassicShellA.exe does this, but I'm looking for something lighter to run with UserInit, as per your post). (Maybe not. Winlogon is a protected process (duh). ClassicTheme opens the winlogon process by running as a service as a System user. Sysinternals' Handles uses a driver. I'll just sit my ass down and use the latter.) I'd like to look at other things, like seeing if I can work out a way to replace the network selection screen that appears with single-click on the network tray to run something of my own choosing. I'm not well-versed in Windows programming though in the slightest, and my reversing knowledge is really, really limited, so I probably won't do anything that'll amount to much, but my nostalgia is running high and I'm wishing I had a laptop around that could run Windows 2000. Windows 8.1 will have to do (except for the OpenWith.exe - while Windows 7's is the best, Windows 10's isn't bad, but the 8 one is an abomination. Since OpenWith Enhanced is buggy for me, I'm going to try and make my own replacement if time allows)...
|
|
|
Post by anixx on Jun 28, 2016 18:12:44 GMT -8
Well, honestly I do not experience any compatibility issues with this method that exceed the compatibility issues when using w8classic in install mode, except those two black strips after closing Classic Shell settings dialog. Can you point to some issues that w8classic can fix in resident mode?
|
|
|
Post by qwerty12 on Jun 28, 2016 19:53:44 GMT -8
Well, honestly I do not experience any compatibility issues with this method that exceed the compatibility issues when using w8classic in install mode, except those two black strips after closing Classic Shell settings dialog. Can you point to some issues that w8classic can fix in resident mode? I'm probably not able to answer that fairly because I'm going wrong somewhere and I can't get rid of the glow on the taskbar when using the non-resident method - when explorer.exe starts, it resets the colour back in the Registry. Maybe I'll have better luck when I install into a VHD instead of using VMware. (So I don't misrepresent anything: I've not actually installed the non-resident method yet because I'm too lazy to run Task Scheduler - I'm logging in, killing explorer, importing the glow fix reg file, running ClassicThemeA, reloading Explorer and running fixstripes) IbmPad said that calling SetProcessDPIAware in every process was done to help with fixing rendering of some applications' title bars. Though I can't find any examples of what that's meant to fix though... For me, it's not necessarily running w8classic resident that's a must, but the idea of having a hook DLL resident in most processes is, to me (and maybe that's just me being extra pedantic - your method does produce a mostly usable desktop, no worse than w8classic in resident mode). With applications like Internet Explorer* and the Aero wizards (as used by Extract All - w8classic when installed actually causes Explorer to crash there - and Windows' troubleshooters) assuming compositing is active and enabling transparency in the title bar area, the only way I see those getting fixed is with something resident (it doesn't have to be something heavy like w10classic with its threads - I'm hooking Chrome with one of my own DLLs so that I can specify a consistent set of command line arguments and do things like show a close prompt if I press Alt+F4 on a Chrome window and there's more than one tab open. ProcessHacker is saying my hook occupies 230 Kb, and the hook doesn't introduce code that causes the CPU to fire up when idle). In my case, I'll undoubtedly need to hook Explorer like w8classic does anyway so that I can workaround problems of my own. On a laptop, being able to quickly connect to Wi-Fi networks is a must, and the Windows 8 manager doesn't work (I've looked at the DLL and the WinRT/Metro stuff is so far beyond me). If I can figure out how to intercept the call to display the non-working Wi-Fi manager, I can keep the default network icon (handles the most cases WRT networks and I'm sure the updating of its signal strength indicator is the most optimised implementation, battery wise) but show something else, like Portlock WiFi Manager (or SwissCom's Unlimited Data Manager). * Internet Explorer is a bad example, I must admit. w8classic replaces the manifest file to get Windows itself to load the patched dwmapi.dll into Internet Explorer (actually, I have no idea why Windows requires this be done - w8classic replaces dwmapi.dll and so it should be loaded regardless)
|
|
|
Post by anixx on Jun 29, 2016 1:41:16 GMT -8
I have totally got rid of the taskbar glow adding the following to the regustry Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM] "Composition"=dword:00000000 "ColorizationGlassAttribute"=dword:00000000 "EnableAeroPeek"=dword:00000000 "AlwaysHibernateThumbnails"=dword:00000000 "ColorizationColor"=dword:ff000000 "ColorizationColorBalance"=dword:00000064 "ColorizationAfterglow"=dword:d9000000 "ColorizationAfterglowBalance"=dword:0000000a "ColorizationBlurBalance"=dword:fffffff6 "EnableWindowColorization"=dword:00000001 "ColorizationOpaqueBlend"=dword:00000000 PLUS going to the colorization settings and adjusting the sliders the following way: These settings are also stored somewhere in registry, if you discover the place it would be great. The Internet Explorer can be fixed by w8classic by pressing the appropriate button, it does not install anything resident. The fix still works when using ClassicThemeA in non-resident mode. > If I can figure out how to intercept the call to display the non-working Wi-Fi manager Just press "switch users" in the start mmenu, go to the logon screen and the Wi-Fi manager works there.
|
|
|
Post by Splitwirez on Jun 29, 2016 3:17:31 GMT -8
What is this "Taskbar glow"?
|
|
|
Post by anixx on Jun 29, 2016 3:31:01 GMT -8
|
|
|
Post by Splitwirez on Jun 29, 2016 3:33:20 GMT -8
Oh, okay :U Huh...so have you guys had any luck with the titlebar overbrightening on applications which use DwmExtendFrameIntoClientArea?
|
|
|
Post by qwerty12 on Jun 29, 2016 9:46:02 GMT -8
PLUS going to the colorization settings and adjusting the sliders the following way: Using a Registry tracing application, when changing the colours to the ones in your screenshot (stock Windows 8.1 install; no w8classic was installed, nor was your Registry file imported): Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Control Panel\Desktop] "AutoColorization"=dword:00000000
[HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM] "ColorizationAfterglow"=dword:d9000000 "ColorizationBlurBalance"=dword:fffffff6 "ColorizationColor"=dword:d9000000 "ColorizationColorBalance"=dword:00000064 "ColorizationGlassAttribute"=dword:00000000
; Changed from aero.theme in C:\Windows\Resources [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes] "CurrentTheme"="C:\\Users\\qwerty12\\AppData\\Local\\Microsoft\\Windows\\Themes\\Custom.theme"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\HighContrast] "Pre-High Contrast Scheme"="C:\\Users\\qwerty12\\AppData\\Local\\Microsoft\\Windows\\Themes\\Custom.theme" I guess Custom.theme needs to be shipped after being generated on a computer... Oh, that's actually not too inconvenient, thanks! Huh...so have you guys had any luck with the titlebar overbrightening on applications which use DwmExtendFrameIntoClientArea? If it's related to wizards not rendering properly, it's something I want to look into, anyway. (But I can't promise anything - I don't want to pretend to be something I'm not, so: I really don't know much about [Windows GUI] programming. I'm just looking to start by seeing if I can replace some of IBMPad's methods - the Internet Explorer patch will break on an IE update and if %WINDIR%\System32\dwmapi.dll is replaced by an update, w8classic will need to be ran again - and there's no guarantee the already-patched DLL will work for sure with a new version. Plus, something in it causes Explorer to crash when showing the Extract All Aero Wizard with a ZIP file...)
|
|
|
Post by Splitwirez on Jun 29, 2016 9:54:22 GMT -8
Huh...so have you guys had any luck with the titlebar overbrightening on applications which use DwmExtendFrameIntoClientArea? If it's related to wizards not rendering properly, it's something I want to look into, anyway. (But I can't promise anything - I don't want to pretend to be something I'm not, so: I really don't know much about [Windows GUI] programming. I'm just looking to start by seeing if I can replace some of IBMPad's methods - the Internet Explorer patch will break on an IE update and if %WINDIR%\System32\dwmapi.dll is replaced by an update, w8classic will need to be ran again - and there's no guarantee the already-patched DLL will work for sure with a new version. Plus, something in it causes Explorer to crash when showing the Extract All Aero Wizard with a ZIP file...) Well it also applies to Google Chrome, paint.NET, etc. ._.
|
|
|
Post by Guest on Jun 29, 2016 15:27:38 GMT -8
For Google Chrome, install this and optionally start it with --disable-dwm-composition. Paint.Net shows fine here.
|
|
|
Post by Splitwirez on Jun 29, 2016 16:08:05 GMT -8
For Google Chrome, install this and optionally start it with --disable-dwm-composition. Paint.Net shows fine here. Well by that logic maybe we should just do this: and drop this entire project .-.
|
|
|
Post by Guest on Jun 29, 2016 17:01:35 GMT -8
...I really don't get it
With Chrome, you don't really have a choice. Under Windows 7 classic mode, it reverts back to its built in skin, the same as what passing that param on the command line does. There may be a disadvantage in that WS_EX_COMPOSITED is not set by Chrome when doing that, but if you want that then just using a skin is enough - Chrome will disable the Aero frame with its transparency, which is antithetical to the Classic theme anyway, but won't do any of the other stuff that happens when passing that param. DWM is running either way. I don't care enough and I lack the skill anyway to try and get Chrome to fill in the transparent parts when the result would just look something like that skin in the end anyway
|
|
|
Post by Splitwirez on Jun 30, 2016 10:16:14 GMT -8
...I really don't get it With Chrome, you don't really have a choice. Under Windows 7 classic mode, it reverts back to its built in skin, the same as what passing that param on the command line does. There may be a disadvantage in that WS_EX_COMPOSITED is not set by Chrome when doing that, but if you want that then just using a skin is enough - Chrome will disable the Aero frame with its transparency, which is antithetical to the Classic theme anyway, but won't do any of the other stuff that happens when passing that param. DWM is running either way. I don't care enough and I lack the skill anyway to try and get Chrome to fill in the transparent parts when the result would just look something like that skin in the end anyway Well it is possible to edit Chrome's .PAK files, so...a Chrome skin which looks like the Classic Theme? Idk... .-.
|
|
|
Post by R.O.B. on Jun 30, 2016 21:44:30 GMT -8
I don't normally use Google Chrome, but I was kind of curious about modifying its UI. So I checked out this link that Splitwirez sent me, and followed the instructions on there. After extracting everything from chrome_100_percent.pak I noticed many, may PNG files, as well as a few files without any extensions (I'll talk about those later). So I started with the PNGs, and after some very simple editing, this was my result: Not bad for just starting out, but still nothing special. But my goal is not to emulate the classic theme, my goal is to make Chrome use native Windows themes. So I decided to try something different. I decided to replace the close button image with an 'empty' file. What I did was I simply created a new text document, changed its file extension to .png, and replaced the image. The results were... well, I'll just let this picture do the talking for me: Obviously I was getting nowhere by simply changing the images. So my attention turned to the files without any extensions. I figured they must be used to actually 'style' the interface (like tell the application which image is used for whatever element). The first step I take when approaching these types of files is opening them in Notepad (or in my case Notepad++). This is really either a hit or miss; either it opens as editable text (which makes things a lot easier) or I have to move on to some other method for modifying them. Given that this was my first time doing anything like this with Chrome, I didn't know what to expect. But sure enough: This actually looks quite reminiscent of CSS used in Firefox themes (which I do have some experience with). I think if we're going to try and make Chrome use native Windows themes, this would be the place to start. I also think this could be worthy of its own thread, since there's a lot of changes that would need to be made, and there's a lot to talk about. Anyway, I'm moving this thread to the 'ClassicTheme.exe Development' section since that's where I think it belongs. Again, I would recommend creating a new thread about Chrome UI modding, since I think there's more than enough stuff to talk about for that, and I don't want this thread to get too derailed (I would like to keep things organized). Anixx, what exactly happens when you try to create threads in the Classic Theme board? Do you get any error messages or anything? Or do you just not see the 'Create Thread' button?
|
|
|
Post by anixx on Sept 15, 2016 6:47:18 GMT -8
Workaround idea: In your AutoHotkey script, use a shellhook to store the hwnd of the Classic Shell settings window when it appears and then when your message handler receives HSHELL_WINDOWDESTROYED, compare HWNDs and have the script rerun fixstrip automatically. This problem disappears with Classic Shell 4.3.0 if the taskbar is set to be non-transparent. So one can enter the settings sheet and apply settings without the black strips appearing now.
|
|
|
Post by anixx on Sept 27, 2016 4:38:48 GMT -8
What is this "Taskbar glow"? By the way, by using your plrogram the following way: SetWindowCompositionAttribute.exe class Shell_TrayWnd blur false one also can remove the blur. This method has an advantage in that the color of the window borders of the hung windows can be customized. Without it, it would be either all-black or there would be blur (in non-resident mode).
|
|