Exemple #1
0
        public static Rectangle GetWindowRectangle(IntPtr handle)
        {
            Rectangle rect = Rectangle.Empty;

            if (NativeMethods.IsDWMEnabled())
            {
                Rectangle tempRect;

                if (NativeMethods.GetExtendedFrameBounds(handle, out tempRect))
                {
                    rect = tempRect;
                }
            }

            if (rect.IsEmpty)
            {
                rect = NativeMethods.GetWindowRect(handle);
            }

            if (!Helpers.IsWindows10OrGreater() && NativeMethods.IsZoomed(handle))
            {
                rect = NativeMethods.MaximizedWindowFix(handle, rect);
            }

            return(rect);
        }
        public static bool UseImmersiveDarkMode(IntPtr handle, bool enabled)
        {
            if (Helpers.IsWindows10OrGreater(17763))
            {
                var attribute = DwmWindowAttribute.DWMWA_USE_IMMERSIVE_DARK_MODE_BEFORE_20H1;
                if (Helpers.IsWindows10OrGreater(18985))
                {
                    attribute = DwmWindowAttribute.DWMWA_USE_IMMERSIVE_DARK_MODE;
                }

                int useImmersiveDarkMode = enabled ? 1 : 0;
                return(DwmSetWindowAttribute(handle, (int)attribute, ref useImmersiveDarkMode, sizeof(int)) == 0);
            }

            return(false);
        }
        public static bool UseImmersiveDarkMode(IntPtr handle, bool enabled)
        {
            if (Helpers.IsWindows10OrGreater(17763))
            {
                try
                {
                    int useImmersiveDarkMode = enabled ? 1 : 0;
                    int result = DwmSetWindowAttribute(handle, (int)DwmWindowAttribute.DWMWA_USE_IMMERSIVE_DARK_MODE, ref useImmersiveDarkMode, sizeof(int));
                    return(result == 0);
                }
                catch (Exception e)
                {
                    DebugHelper.WriteException(e);
                }
            }

            return(false);
        }