diff --git a/src/Shared/HandyControlDemo_Shared/App.xaml.cs b/src/Shared/HandyControlDemo_Shared/App.xaml.cs index 57004b4e..c571c2f9 100644 --- a/src/Shared/HandyControlDemo_Shared/App.xaml.cs +++ b/src/Shared/HandyControlDemo_Shared/App.xaml.cs @@ -73,7 +73,6 @@ namespace HandyControlDemo UpdateSkin(GlobalData.Config.Skin); } - ConfigHelper.Instance.SystemVersionInfo = CommonHelper.GetSystemVersionInfo(); ConfigHelper.Instance.SetWindowDefaultStyle(); ConfigHelper.Instance.SetNavigationWindowDefaultStyle(); diff --git a/src/Shared/HandyControl_Shared/Controls/Window/BlurWindow.cs b/src/Shared/HandyControl_Shared/Controls/Window/BlurWindow.cs index 7312d86e..451bf379 100644 --- a/src/Shared/HandyControl_Shared/Controls/Window/BlurWindow.cs +++ b/src/Shared/HandyControl_Shared/Controls/Window/BlurWindow.cs @@ -13,10 +13,18 @@ namespace HandyControl.Controls base.OnApplyTemplate(); EnableBlur(this); } + + private static SystemVersionInfo GetSystemVersionInfo() + { + var osv = new InteropValues.RTL_OSVERSIONINFOEX(); + osv.dwOSVersionInfoSize = (uint)Marshal.SizeOf(osv); + InteropMethods.Gdip.RtlGetVersion(out osv); + return new SystemVersionInfo((int)osv.dwMajorVersion, (int)osv.dwMinorVersion, (int)osv.dwBuildNumber); + } internal static void EnableBlur(Window window) { - var versionInfo = ConfigHelper.Instance.SystemVersionInfo; + var versionInfo = GetSystemVersionInfo(); if (versionInfo < SystemVersionInfo.Windows10 || versionInfo >= SystemVersionInfo.Windows10_1903) diff --git a/src/Shared/HandyControl_Shared/Data/HandyControlConfig.cs b/src/Shared/HandyControl_Shared/Data/HandyControlConfig.cs index 4e6d9a23..10556160 100644 --- a/src/Shared/HandyControl_Shared/Data/HandyControlConfig.cs +++ b/src/Shared/HandyControl_Shared/Data/HandyControlConfig.cs @@ -2,8 +2,6 @@ { public class HandyControlConfig { - public SystemVersionInfo SystemVersionInfo { get; set; } - public string Lang { get; set; } public int TimelineFrameRate { get; set; } = 60; diff --git a/src/Shared/HandyControl_Shared/Tools/Helper/ConfigHelper.cs b/src/Shared/HandyControl_Shared/Tools/Helper/ConfigHelper.cs index 8f9bfc8a..2b3662e9 100644 --- a/src/Shared/HandyControl_Shared/Tools/Helper/ConfigHelper.cs +++ b/src/Shared/HandyControl_Shared/Tools/Helper/ConfigHelper.cs @@ -37,8 +37,6 @@ namespace HandyControl.Tools } } - public SystemVersionInfo SystemVersionInfo { get; set; } - public void SetLang(string lang) { LangProvider.Culture = new CultureInfo(lang); @@ -48,7 +46,6 @@ namespace HandyControl.Tools public void SetConfig(HandyControlConfig config) { - SystemVersionInfo = config.SystemVersionInfo; SetLang(config.Lang); SetTimelineFrameRate(config.TimelineFrameRate); } diff --git a/src/Shared/HandyControl_Shared/Tools/Interop/InteropMethods.cs b/src/Shared/HandyControl_Shared/Tools/Interop/InteropMethods.cs index fde76808..72a22351 100644 --- a/src/Shared/HandyControl_Shared/Tools/Interop/InteropMethods.cs +++ b/src/Shared/HandyControl_Shared/Tools/Interop/InteropMethods.cs @@ -703,6 +703,10 @@ namespace HandyControl.Tools.Interop [DllImport(InteropValues.ExternDll.GdiPlus, SetLastError = true, ExactSpelling = true, CharSet = CharSet.Unicode)] [ResourceExposure(ResourceScope.None)] internal static extern int GdipSaveImageToStream(HandleRef image, InteropValues.IStream stream, ref Guid classId, HandleRef encoderParams); + + [DllImport(InteropValues.ExternDll.NTdll)] + internal static extern int RtlGetVersion(out InteropValues.RTL_OSVERSIONINFOEX lpVersionInformation); + } } } \ No newline at end of file diff --git a/src/Shared/HandyControl_Shared/Tools/Interop/InteropValues.cs b/src/Shared/HandyControl_Shared/Tools/Interop/InteropValues.cs index 955fc062..44d1618d 100644 --- a/src/Shared/HandyControl_Shared/Tools/Interop/InteropValues.cs +++ b/src/Shared/HandyControl_Shared/Tools/Interop/InteropValues.cs @@ -17,7 +17,8 @@ namespace HandyControl.Tools.Interop GdiPlus = "gdiplus.dll", Kernel32 = "kernel32.dll", Shell32 = "shell32.dll", - MsImg = "msimg32.dll"; + MsImg = "msimg32.dll", + NTdll = "ntdll.dll"; } internal delegate IntPtr HookProc(int code, IntPtr wParam, IntPtr lParam); @@ -956,5 +957,17 @@ namespace HandyControl.Tools.Interop public RECT rc; public int lParam; } + + [StructLayout(LayoutKind.Sequential)] + internal struct RTL_OSVERSIONINFOEX + { + internal uint dwOSVersionInfoSize; + internal uint dwMajorVersion; + internal uint dwMinorVersion; + internal uint dwBuildNumber; + internal uint dwPlatformId; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + internal string szCSDVersion; + } } } \ No newline at end of file