Sent to all top-level windows when the colorization color has changed.
wParam: Specifies the new colorization color. The color format is 0xAARRGGBB.
lParam: Specifies whether the new color is blended with opacity.
We receive this message when the Aero Glass colour changes. Unfortunately, the value contained in wParam is not the ‘base colour’, as it is in fact the result of the DwmGetColorizationColor function. As Rafael Rivera noted last year, when glass transparency is enabled, the value returned by this function is quite different to the base colour:
As such, we shouldn’t rely on the contents of wParam (or on the DwmGetColorizationColor function in general).
The easiest method to find the actual base colour is to retrieve the ColorizationColor DWORD from HKCUSoftwareMicrosoftWindowsDWM. This, however, is undocumented, and could potentially change in a future version of Windows (it is correct in NT 6.0 and 6.1):
RegistryKey colourKey = Registry.CurrentUser.CreateSubKey(@"SoftwareMicrosoftWindowsDWM");
uint colour = (uint)(int)colourKey.GetValue("ColorizationColor");
(We can’t cast directly to uint despite it being a REG_DWORD, hence the first cast to int…)
For those who feel more adventurous, Rafael went to the trouble of finding a function in dwmapi.dll which returns the base colour (amongst other things). He describes it here.