internal static void EnableBlur(IntPtr handle, Win32.AccentState state = Win32.AccentState.ACCENT_ENABLE_TRANSPARENTGRADIENT) { var accent = new Win32.AccentPolicy(); var accentStructSize = Marshal.SizeOf(accent); accent.AccentState = state; var accentPtr = Marshal.AllocHGlobal(accentStructSize); Marshal.StructureToPtr(accent, accentPtr, false); var data = new Win32.WindowCompositionAttributeData(); data.Attribute = Win32.WindowCompositionAttribute.WCA_ACCENT_POLICY; data.SizeOfData = accentStructSize; data.Data = accentPtr; Win32.SetWindowCompositionAttribute(handle, ref data); Marshal.FreeHGlobal(accentPtr); }
private void setTaskbarStyle(TaskbarMode mode) { string tskBarClassName = "Shell_TrayWnd"; IntPtr tskBarHwnd = Win32.FindWindow(tskBarClassName, null /* TODO Change to default(_) if this is not a reference type */); var accent = new Win32.AccentPolicy(); var accentStructSize = Marshal.SizeOf(accent); switch (mode) { default: case TaskbarMode.Acrylic: accent.AccentState = Win32.AccentState.ACCENT_ENABLE_ACRYLICBLURBEHIND; accent.GradientColor = 10; break; case TaskbarMode.Blur: accent.AccentState = Win32.AccentState.ACCENT_ENABLE_BLURBEHIND; break; case TaskbarMode.Transparent: accent.AccentState = Win32.AccentState.ACCENT_ENABLE_TRANSPARANT; break; case TaskbarMode.None: accent.AccentState = Win32.AccentState.ACCENT_DISABLED; break; } var accentPtr = Marshal.AllocHGlobal(accentStructSize); Marshal.StructureToPtr(accent, accentPtr, false); var data = new Win32.WindowCompositionAttributeData(); data.Attribute = Win32.WindowCompositionAttribute.WCA_ACCENT_POLICY; data.SizeOfData = accentStructSize; data.Data = accentPtr; Win32.SetWindowCompositionAttribute(tskBarHwnd, ref data); Marshal.FreeHGlobal(accentPtr); }