|
Post by OrthodoxWin32 on Apr 25, 2022 5:31:25 GMT -8
This is a old Windows theme editor developed by Microsoft. This editor is interesting because the color and window metric settings change does not freeze the screen, unlike Deskn in some configurations (https://github.com/WinClassic/SimpleClassicTheme/issues/52) (including mine) . archive.org/details/themak5_3
|
|
|
Post by OrthodoxWin32 on Apr 28, 2022 13:33:48 GMT -8
This is a old Windows theme editor developed by Microsoft. This editor is interesting because the color and window metric settings change does not freeze the screen, unlike Deskn in some configurations (https://github.com/WinClassic/SimpleClassicTheme/issues/52) (including mine) . archive.org/details/themak5_3However, the disadvantage of this program is that the degraded title bar which appeared with Windows 98, and the additional colors appeared with Windows XP are not supported.
|
|
|
Post by leet on May 5, 2022 13:45:54 GMT -8
How does one even use this on 64-bit machines?
|
|
|
Post by leet on May 5, 2022 16:38:16 GMT -8
I've done extensive analysis into classic schemes, their properties and how they get applied, and have the following conclusions on ThemeMaker: ThemeMaker uses the same method to apply colors and metrics as deskn.cpl. (SPI_SETNONCLIENTMETRICS + SetSysColors, SPI_SETNONCLIENTMETRICS being the culprit that can freeze on Windows 10) There's just a slight difference: ThemeMaker doesn't work properly on Windows 10, so window metrics and fonts don't get applied. The applying of metrics and fonts is what freezes deskn, not the colors. ThemeMaker seems to miss some colors added in later versions of Windows. ThemeMaker doesn't seem to include a way to change the sizes of things like the menu bar and borders. ThemeMaker's preview is terrible.
|
|
|
Post by leet on May 6, 2022 3:36:02 GMT -8
|
|
|
Post by OrthodoxWin32 on May 6, 2022 3:51:54 GMT -8
I've done extensive analysis into classic schemes, their properties and how they get applied, and have the following conclusions on ThemeMaker: ThemeMaker uses the same method to apply colors and metrics as deskn.cpl. (SPI_SETNONCLIENTMETRICS + SetSysColors, SPI_SETNONCLIENTMETRICS being the culprit that can freeze on Windows 10) There's just a slight difference: ThemeMaker doesn't work properly on Windows 10, so window metrics and fonts don't get applied. The applying of metrics and fonts is what freezes deskn, not the colors. ThemeMaker seems to miss some colors added in later versions of Windows. ThemeMaker doesn't seem to include a way to change the sizes of things like the menu bar and borders. ThemeMaker's preview is terrible. I understand, but the problem is that it is the only way (with the configuration applet Windows 3.x/NT3.x) to be able to change the colors directly without freeze. The color problem that appeared in the ulterior version of Windows also arises on Deskn, because Deskn does not include colors that appeared with Windows XP (even the version of Windows XP does not include Windows XP colors !). The only tools supporting ALL colors is SMACC ; Unfortunately, the change is not direct, SMACC writes just in the registry. So for me, Thememaker or the Windows 3.X/NT3.x configuration applet are more effective for changing colors under Windows 10 than Deskn. The only colors less are the gradients, but that does not change anything because the colors of Windows XP being in any case absent, it is necessary anyway added colors directly in the register (or in SMACC). For metrics and fonts, I use these tools: github.com/tatsu-syo/remetrics github.com/tatsu-syo/nomeiryoui. These tools are very effective, they do not cause any freeze.
|
|
|
Post by OrthodoxWin32 on May 6, 2022 3:59:28 GMT -8
It’s a little off-topic, but in general, the management of theme in the recent version of Windows is catastrophic. For example, the Windows theme engine (when applying a .Theme file) does not support the metrics of the windows, they must be changed separately. I have to use batch files to change all parameters simultaneously when changing a theme (which is not even enough, because I can't find any means to change the window metrics in a batch file, while It operates on a command line).
|
|
|
Post by leet on May 6, 2022 4:47:01 GMT -8
With deskn the underlying API SystemParametersInfo is not supposed to wait for all applications to respond when not supplied the SPIF_SENDCHANGE parameter. But with SPI_SETNONCLIENTMETRICS the function does this regardless. This is why in some instances you get a freeze, because modern applications do not know how to respond to the message, and just ignore it instead of returning the result from DefWndProc. The reason why ThemeMaker works is because it doesn't set any window metrics at all, just colors. Colors themselves don't have any issue applying and will work fine. Also, SCT will offer a solution to the entire scheme issue, as SCT schemes will contain ALL values (colors, metrics and fonts) and will be appliable with a maximum delay of 5 seconds. The ReMetrics tool you mentioned coincidentally uses the exact same approach as SCT does. It creates a new thread which will enable the theme, waits for the thread to finish within 5 seconds or else it abandons it. This can be seen here: SCT: github.com/WinClassic/SimpleClassicTheme/blob/2f1fee13a7e8b40f69e1314f8a5010ed7ab2fe44/SimpleClassicTheme/Theming/ApperanceScheme.cs#L265ReMetrics: github.com/Tatsu-syo/ReMetrics/blob/master/program/ReMetrics.cpp#L1665Aside from that, .theme files do support metrics, just in the form of binary data (a NONCLIENTMETRICSW structure, the same one that's used for applying the metrics).
|
|
|
Post by OrthodoxWin32 on May 6, 2022 14:28:32 GMT -8
With deskn the underlying API SystemParametersInfo is not supposed to wait for all applications to respond when not supplied the SPIF_SENDCHANGE parameter. But with SPI_SETNONCLIENTMETRICS the function does this regardless. This is why in some instances you get a freeze, because modern applications do not know how to respond to the message, and just ignore it instead of returning the result from DefWndProc. The reason why ThemeMaker works is because it doesn't set any window metrics at all, just colors. Colors themselves don't have any issue applying and will work fine. Also, SCT will offer a solution to the entire scheme issue, as SCT schemes will contain ALL values (colors, metrics and fonts) and will be appliable with a maximum delay of 5 seconds. The ReMetrics tool you mentioned coincidentally uses the exact same approach as SCT does. It creates a new thread which will enable the theme, waits for the thread to finish within 5 seconds or else it abandons it. This can be seen here: SCT: github.com/WinClassic/SimpleClassicTheme/blob/2f1fee13a7e8b40f69e1314f8a5010ed7ab2fe44/SimpleClassicTheme/Theming/ApperanceScheme.cs#L265ReMetrics: github.com/Tatsu-syo/ReMetrics/blob/master/program/ReMetrics.cpp#L1665Aside from that, .theme files do support metrics, just in the form of binary data (a NONCLIENTMETRICSW structure, the same one that's used for applying the metrics). Thank you very much for all this research and information. I am just surprised at the metric support by the theme engine, because I have long tried to insert the binary data in the .theme file, but that does not work. What is even stranger is that the metrics and fonts change in command lines that Restrics and Nomeiryoui offer works, but as soon as I fit the commands in a batch file, the commands no longer work.
|
|