Hello,
maybe somebody will be interested in my small project. Therefore, I am sharing the first information about it. I have managed to reimplement Aero Glass function into Windows 8 Desktop Window Manager.
How does it work?
I have developed DLL library in C++ which is injected into dwm.exe process (no system files replacement is required). Then, the functions used for window border drawing are hooked with my own implementation. This ensures that anytime DWM wants to draw the window border, the code is redirected into my library where I change the drawing parameters and redirect back to the original drawing function. Transparent window border wih blur effect is drawn!
Is it completely new implementation?
Just a partially. Since a lot of Aero Glass resources is still present in Win8, I'm trying to reuse them as much as possible. The blur effect is implemented completely in Direct3D with using of native shaders a system settings. With some small exceptions, I just call the same commands as they would be called by Windows itself (e.g. in Win7 or Win8 RP).
Are there any drawbacks?
There is a main problem that DWM implements occlusion regions management which ensures that only visible regions of the screen are redrawn. This simply does not draw the content which is obscured by other windows. And, unfortunately, it pays for the content under window border too. Thus, it requires to force DWM draw content under transparent borders. This can be implemented on low-level only - it means calling or hooking the internal DWM object methods which requires to know their exact memory locations (or relative offsets). This is relatively simple but the offsets can change with new version of DWM component.
The other problem lies in loading library into memory, because - for correct function - it has to be loaded together with DWM process but before creation of its internal objects. Currently, the method of DLL injection via AppInit_DLLs registry key is used but it is not supported when UEFI secure boot is enabled.
Link for downloading:
https://developer.be...?group_id=13124
--> installer will be available with final release, now only manual script available
--> registry script is attached in the archive but you must manually edit the file to point to the location where you extract DLL file
--> the glass will automatically load at Windows startup
--> if your computer won't boot up for some reason (glass failure), hold CTRL key during DWM loading and no procedure will be installed into memory
--> since Win8 default color schemes are not prepared for glass feature, the transparency effect can be very low. In such case, you must modify color settings in Windows Control Panel.
--> if you use custom theme which has hardcoded fully opaque borders, the effect won't be visible
If there is any bug and DWM crashes, it will generate crash log (using attached PDB files) in the folder where you extracted DLL to.
I hope you will like it :-)
Attached File(s)
-
AeroGlassWin8.png (200.22K)
Number of downloads: 1445
This post has been edited by bigmuscle: 17 May 2013 - 08:23 AM



Help

Back to top











