Example #1
0
        public MainWindow()
        {
            InitializeComponent();

            RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion");

            var buildNumber  = Convert.ToInt32(registryKey.GetValue("CurrentBuild"));
            var buildNumber2 = Convert.ToInt32(registryKey.GetValue("CurrentMajorVersionNumber"));
            var buildNumber3 = Convert.ToInt32(registryKey.GetValue("CurrentMinorVersionNumber"));

            var info = new SystemVersionInfo(buildNumber2, buildNumber3, buildNumber);


            MessageBox.Show(info.Major + " " + info.Minor + " " + info.Build);
        }
Example #2
0
        public static SystemVersionInfo GetSystemVersionInfo()
        {
            var managementClass = new ManagementClass("Win32_OperatingSystem");
            var instances       = managementClass.GetInstances();

            foreach (var instance in instances)
            {
                if (instance["Version"] is string version)
                {
                    var nums = version.Split('.').Select(int.Parse).ToList();
                    var info = new SystemVersionInfo(nums[0], nums[1], nums[2]);
                    return(info);
                }
            }
            return(default);
Example #3
0
        internal static void EnableBlur(Window window)
        {
            RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion");

            var build = Convert.ToInt32(registryKey.GetValue("CurrentBuild"));
            var major = Convert.ToInt32(registryKey.GetValue("CurrentMajorVersionNumber"));
            var minor = Convert.ToInt32(registryKey.GetValue("CurrentMinorVersionNumber"));

            SystemVersionInfo = new SystemVersionInfo(major, minor, build);

            var accentPolicy     = new ExternDllHelper.ACCENTPOLICY();
            var accentPolicySize = Marshal.SizeOf(accentPolicy);

            if (SystemVersionInfo >= SystemVersionInfo.Windows10_1809)
            {
                accentPolicy.AccentState = ExternDllHelper.ACCENTSTATE.ACCENT_ENABLE_ACRYLICBLURBEHIND;
            }
            else if (SystemVersionInfo >= SystemVersionInfo.Windows10)
            {
                accentPolicy.AccentState = ExternDllHelper.ACCENTSTATE.ACCENT_ENABLE_BLURBEHIND;
            }
            else
            {
                var colorValue = ResourceHelper.GetResource <uint>(ResourceToken.BlurGradientValue);
                var color      = ColorHelper.ToColor(colorValue);
                color             = Color.FromRgb(color.R, color.G, color.B);
                window.Background = new SolidColorBrush(color);
                return;
            }

            accentPolicy.AccentFlags   = 2;
            accentPolicy.GradientColor = ResourceHelper.GetResource <uint>(ResourceToken.BlurGradientValue);

            var accentPtr = Marshal.AllocHGlobal(accentPolicySize);

            Marshal.StructureToPtr(accentPolicy, accentPtr, false);

            var data = new ExternDllHelper.WINCOMPATTRDATA
            {
                Attribute = ExternDllHelper.WINDOWCOMPOSITIONATTRIB.WCA_ACCENT_POLICY,
                DataSize  = accentPolicySize,
                Data      = accentPtr
            };

            ExternDllHelper.SetWindowCompositionAttribute(new WindowInteropHelper(window).Handle, ref data);

            Marshal.FreeHGlobal(accentPtr);
        }
        public static SystemVersionInfo GetSystemVersionInfo()
        {
            ManagementClass            managementClass = new ManagementClass("Win32_OperatingSystem");
            ManagementObjectCollection instances       = managementClass.GetInstances();

            foreach (ManagementBaseObject instance in instances)
            {
                if (instance["Version"] is string version)
                {
                    System.Collections.Generic.List <int> nums = version.Split('.').Select(int.Parse).ToList();
                    SystemVersionInfo info = new SystemVersionInfo(nums[0], nums[1], nums[2]);
                    return(info);
                }
            }
            return(default(SystemVersionInfo));
        }
Example #5
0
        internal static void EnableBlur(Window window)
        {
            var version     = WindowHelper.GetWindowsVersion();
            var versionInfo = new SystemVersionInfo(version.Major, version.Minor, version.Build);

            if (versionInfo < SystemVersionInfo.Windows10 ||
                versionInfo >= SystemVersionInfo.Windows10_1903)
            {
                var colorValue = ResourceHelper.GetResource <uint>(ResourceToken.BlurGradientValue);
                var color      = ColorHelper.ToColor(colorValue);
                color             = Color.FromRgb(color.R, color.G, color.B);
                window.Background = new SolidColorBrush(color);
                return;
            }

            var accentPolicy     = new InteropValues.ACCENTPOLICY();
            var accentPolicySize = Marshal.SizeOf(accentPolicy);

            accentPolicy.AccentState = versionInfo < SystemVersionInfo.Windows10_1809
                ? InteropValues.ACCENTSTATE.ACCENT_ENABLE_BLURBEHIND
                : InteropValues.ACCENTSTATE.ACCENT_ENABLE_ACRYLICBLURBEHIND;

            accentPolicy.AccentFlags   = 2;
            accentPolicy.GradientColor = ResourceHelper.GetResource <uint>(ResourceToken.BlurGradientValue);

            var accentPtr = Marshal.AllocHGlobal(accentPolicySize);

            Marshal.StructureToPtr(accentPolicy, accentPtr, false);

            var data = new InteropValues.WINCOMPATTRDATA
            {
                Attribute = InteropValues.WINDOWCOMPOSITIONATTRIB.WCA_ACCENT_POLICY,
                DataSize  = accentPolicySize,
                Data      = accentPtr
            };

            InteropMethods.Gdip.SetWindowCompositionAttribute(window.GetHandle(), ref data);

            Marshal.FreeHGlobal(accentPtr);
        }
Example #6
0
 public static extern void RtlGetVersion(ref SystemVersionInfo versionInfo);