Example #1
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        /// <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);
        }
Example #5
0
        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);
        }
Example #6
0
        /// <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;
        }
Example #8
0
File: Theme.cs Project: WELL-E/Wox
        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);
        }