diff --git a/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj b/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj
index de147646..404f56c4 100644
--- a/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj
+++ b/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj
@@ -9,7 +9,6 @@
-
diff --git a/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj b/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj
index 30396196..7a7c711c 100644
--- a/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj
+++ b/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj
@@ -14,7 +14,6 @@
-
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/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems b/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems
index 9e2f6ce1..59a21ff5 100644
--- a/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems
+++ b/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems
@@ -38,7 +38,6 @@
-
Avatar.xaml
diff --git a/src/Shared/HandyControlDemo_Shared/Tools/Helper/CommonHelper.cs b/src/Shared/HandyControlDemo_Shared/Tools/Helper/CommonHelper.cs
deleted file mode 100644
index 75ef4e9c..00000000
--- a/src/Shared/HandyControlDemo_Shared/Tools/Helper/CommonHelper.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System.Linq;
-using System.Management;
-using HandyControl.Data;
-
-namespace HandyControlDemo.Tools
-{
- public class CommonHelper
- {
- 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;
- }
- }
-}
\ No newline at end of file
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