private void ToggleBlur(bool? state) { var accent = new AccentPolicy(); state = (state == null) ? DEFAULT_BLUR : Convert.ToBoolean(state); if ((bool)state) { accent.AccentState = AccentState.ACCENT_ENABLE_BLURBEHIND; } else { accent.AccentState = AccentState.ACCENT_DISABLED; } var accentStructSize = Marshal.SizeOf(accent); var accentPtr = Marshal.AllocHGlobal(accentStructSize); Marshal.StructureToPtr(accent, accentPtr, false); var data = new WindowCompositionAttributeData(); data.Attribute = WindowCompositionAttribute.WCA_ACCENT_POLICY; data.SizeOfData = accentStructSize; data.Data = accentPtr; SetWindowCompositionAttribute(Helper.Handle, ref data); Marshal.FreeHGlobal(accentPtr); }
internal void EnableBlur() { var windowHelper = new WindowInteropHelper(this); var accent = new AccentPolicy(); var accentStructSize = Marshal.SizeOf(accent); accent.AccentState = AccentState.ACCENT_ENABLE_BLURBEHIND; var accentPtr = Marshal.AllocHGlobal(accentStructSize); Marshal.StructureToPtr(accent, accentPtr, false); var data = new WindowCompositionAttributeData(); data.Attribute = WindowCompositionAttribute.WCA_ACCENT_POLICY; data.SizeOfData = accentStructSize; data.Data = accentPtr; SetWindowCompositionAttribute(windowHelper.Handle, ref data); Marshal.FreeHGlobal(accentPtr); }
internal void EnableBlur() { var windowHelper = new System.Windows.Interop.WindowInteropHelper(this); var accent = new AccentPolicy(); accent.AccentState = AccentState.ACCENT_ENABLE_BLURBEHIND; var accentStructSize = Marshal.SizeOf(accent); var accentPtr = Marshal.AllocHGlobal(accentStructSize); Marshal.StructureToPtr(accent, accentPtr, false); var data = new WindowCompositionAttributeData(); data.Attribute = WindowCompositionAttribute.WCA_ACCENT_POLICY; data.SizeOfData = accentStructSize; data.Data = accentPtr; SetWindowCompositionAttribute(windowHelper.Handle, ref data); Marshal.FreeHGlobal(accentPtr); }
/// <summary> /// 設定aero /// </summary> /// <param name="w"></param> public void func_win10_aero(Window w) { var windowHelper = new WindowInteropHelper(w); var accent = new AccentPolicy(); accent.AccentState = AccentState.ACCENT_ENABLE_BLURBEHIND; var accentStructSize = Marshal.SizeOf(accent); var accentPtr = Marshal.AllocHGlobal(accentStructSize); Marshal.StructureToPtr(accent, accentPtr, false); var data = new WindowCompositionAttributeData(); data.Attribute = WindowCompositionAttribute.WCA_ACCENT_POLICY; data.SizeOfData = accentStructSize; data.Data = accentPtr; SetWindowCompositionAttribute(windowHelper.Handle, ref data); Marshal.FreeHGlobal(accentPtr); }
public static void EnableBlur(Window window) { var accent = new AccentPolicy(); var accentStructSize = Marshal.SizeOf(accent); accent.AccentState = AccentState.AccentEnableBlurbehind; accent.AccentFlags = 2; accent.GradientColor = 0x99FFFFFF; var accentPtr = Marshal.AllocHGlobal(accentStructSize); Marshal.StructureToPtr(accent, accentPtr, false); var data = new WindowCompositionAttributeData { Attribute = WindowCompositionAttribute.WcaAccentPolicy, SizeOfData = accentStructSize, Data = accentPtr }; User32.SetWindowCompositionAttribute(new WindowInteropHelper(window).Handle, ref data); Marshal.FreeHGlobal(accentPtr); }
/// <summary> /// Too complicated to explain, so no comments /// </summary> /// <param name="taskbars"></param> /// <param name="taskbarState"></param> internal static void SetBarState(this List <Taskbar> taskbars, TaskbarState taskbarState) { if (taskbarState.HideTaskbarCompletely) { AutoHide.SetAutoHide(true); foreach (var taskbar in taskbars) { ShowWindow(taskbar.Handle, SwHide); } } else { if (taskbarState.TransparentMode == TransparentModeType.Disable) { ButtonSize.SetIconSize(taskbarState.IconSize); AutoHide.SetAutoHide(taskbarState.IsAutoHide); foreach (var taskbar in taskbars) { ShowWindow(taskbar.Handle, SwShow); } PostMessage(FindWindow(Constant.MainTaskbar, null), WmThemechanged, IntPtr.Zero, IntPtr.Zero); if (_accentPtr == IntPtr.Zero) { return; } Marshal.FreeHGlobal(_accentPtr); _accentPtr = IntPtr.Zero; } else { if (_accentPtr == IntPtr.Zero) { var size = Marshal.SizeOf(typeof(AccentPolicy)); _accentPtr = Marshal.AllocHGlobal(size); _data = new WindowCompositionAttributeData { Attribute = 19, SizeOfData = size, Data = _accentPtr }; } AccentPolicy accent; switch (taskbarState.TransparentMode) { case TransparentModeType.Transparent: accent = new AccentPolicy { AccentState = 3, AccentFlags = 1 }; break; case TransparentModeType.Blur: accent = new AccentPolicy { AccentState = 2, AccentFlags = 2, GradientColor = 0 }; break; default: throw new ArgumentOutOfRangeException(); } Marshal.StructureToPtr(accent, _accentPtr, false); ButtonSize.SetIconSize(taskbarState.IconSize); AutoHide.SetAutoHide(taskbarState.IsAutoHide); foreach (var taskbar in taskbars) { SetWindowCompositionAttribute(taskbar.Handle, ref _data); ShowWindow(taskbar.Handle, SwShow); } } } }
public static bool SetAeroGlass(this Window window, bool enable) { if (window == null) throw new ArgumentNullException(nameof(window)); if (Environment.OSVersion.Version.Major < 6) { // An OS older than Windows Vista. return false; } if (SystemParameters.HighContrast) { // Blur is not useful in high contrast mode. return false; } try { var windowHelper = new WindowInteropHelper(window); var accent = new AccentPolicy { AccentState = enable ? AccentState.ACCENT_ENABLE_BLURBEHIND : AccentState.ACCENT_DISABLED, //AccentFlags = AccentFlags.DrawAllBorders }; var accentStructSize = Marshal.SizeOf(accent); var accentPtr = Marshal.AllocHGlobal(accentStructSize); Marshal.StructureToPtr(accent, accentPtr, false); var data = new WindowCompositionAttribData { Attribute = WindowCompositionAttribute.WCA_ACCENT_POLICY, SizeOfData = accentStructSize, Data = accentPtr }; SetWindowCompositionAttribute(windowHelper.Handle, ref data); Marshal.FreeHGlobal(accentPtr); } catch (DllNotFoundException) { return false; } return true; }
private void SetWindowAccent(Window wind, AccentState themeAccentMode) { var windowHelper = new WindowInteropHelper(wind); var accent = new AccentPolicy { AccentState = themeAccentMode }; var accentStructSize = Marshal.SizeOf(accent); var accentPtr = Marshal.AllocHGlobal(accentStructSize); Marshal.StructureToPtr(accent, accentPtr, false); var data = new WindowCompositionAttributeData { Attribute = WindowCompositionAttribute.WCA_ACCENT_POLICY, SizeOfData = accentStructSize, Data = accentPtr }; SetWindowCompositionAttribute(windowHelper.Handle, ref data); Marshal.FreeHGlobal(accentPtr); }