Merge pull request #449 from ghost1372/WindowsVersion

Get Windows Version without System.Management
This commit is contained in:
NaBian authored and GitHub committed 2020-08-01 17:23:18 +08:00
commit e8d7cb3a85
10 files changed
+27 -36

No files matched your search

@@ -9,7 +9,6 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="System.Management" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="AvalonEdit" Version="6.0.1" /> <PackageReference Include="AvalonEdit" Version="6.0.1" />
@@ -14,7 +14,6 @@
<PackageReference Include="AvalonEdit" Version="6.0.1" /> <PackageReference Include="AvalonEdit" Version="6.0.1" />
<PackageReference Include="MvvmLightLibsStd10" Version="5.4.1.1" /> <PackageReference Include="MvvmLightLibsStd10" Version="5.4.1.1" />
<PackageReference Include="Newtonsoft.Json" Version="11.0.2" /> <PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
<PackageReference Include="System.Management" Version="4.6.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="..\..\Shared\HandyControlDemo_Shared\Data\MessageToken.cs"> <Compile Include="..\..\Shared\HandyControlDemo_Shared\Data\MessageToken.cs">
@@ -73,7 +73,6 @@ namespace HandyControlDemo
UpdateSkin(GlobalData.Config.Skin); UpdateSkin(GlobalData.Config.Skin);
} }
ConfigHelper.Instance.SystemVersionInfo = CommonHelper.GetSystemVersionInfo();
ConfigHelper.Instance.SetWindowDefaultStyle(); ConfigHelper.Instance.SetWindowDefaultStyle();
ConfigHelper.Instance.SetNavigationWindowDefaultStyle(); ConfigHelper.Instance.SetNavigationWindowDefaultStyle();
@@ -38,7 +38,6 @@
<Compile Include="$(MSBuildThisFileDirectory)Tools\Converter\StringRepeatConverter.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Tools\Converter\StringRepeatConverter.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Tools\Extension\LangExtension.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Tools\Extension\LangExtension.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Tools\Helper\AssemblyHelper.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Tools\Helper\AssemblyHelper.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Tools\Helper\CommonHelper.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Tools\Helper\Win32Helper.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Tools\Helper\Win32Helper.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UserControl\Basic\Avatar.xaml.cs"> <Compile Include="$(MSBuildThisFileDirectory)UserControl\Basic\Avatar.xaml.cs">
<DependentUpon>Avatar.xaml</DependentUpon> <DependentUpon>Avatar.xaml</DependentUpon>
@@ -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;
}
}
}
@@ -14,9 +14,17 @@ namespace HandyControl.Controls
EnableBlur(this); 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) internal static void EnableBlur(Window window)
{ {
var versionInfo = ConfigHelper.Instance.SystemVersionInfo; var versionInfo = GetSystemVersionInfo();
if (versionInfo < SystemVersionInfo.Windows10 || if (versionInfo < SystemVersionInfo.Windows10 ||
versionInfo >= SystemVersionInfo.Windows10_1903) versionInfo >= SystemVersionInfo.Windows10_1903)
@@ -2,8 +2,6 @@
{ {
public class HandyControlConfig public class HandyControlConfig
{ {
public SystemVersionInfo SystemVersionInfo { get; set; }
public string Lang { get; set; } public string Lang { get; set; }
public int TimelineFrameRate { get; set; } = 60; public int TimelineFrameRate { get; set; } = 60;
@@ -37,8 +37,6 @@ namespace HandyControl.Tools
} }
} }
public SystemVersionInfo SystemVersionInfo { get; set; }
public void SetLang(string lang) public void SetLang(string lang)
{ {
LangProvider.Culture = new CultureInfo(lang); LangProvider.Culture = new CultureInfo(lang);
@@ -48,7 +46,6 @@ namespace HandyControl.Tools
public void SetConfig(HandyControlConfig config) public void SetConfig(HandyControlConfig config)
{ {
SystemVersionInfo = config.SystemVersionInfo;
SetLang(config.Lang); SetLang(config.Lang);
SetTimelineFrameRate(config.TimelineFrameRate); SetTimelineFrameRate(config.TimelineFrameRate);
} }
@@ -703,6 +703,10 @@ namespace HandyControl.Tools.Interop
[DllImport(InteropValues.ExternDll.GdiPlus, SetLastError = true, ExactSpelling = true, CharSet = CharSet.Unicode)] [DllImport(InteropValues.ExternDll.GdiPlus, SetLastError = true, ExactSpelling = true, CharSet = CharSet.Unicode)]
[ResourceExposure(ResourceScope.None)] [ResourceExposure(ResourceScope.None)]
internal static extern int GdipSaveImageToStream(HandleRef image, InteropValues.IStream stream, ref Guid classId, HandleRef encoderParams); 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);
} }
} }
} }
@@ -17,7 +17,8 @@ namespace HandyControl.Tools.Interop
GdiPlus = "gdiplus.dll", GdiPlus = "gdiplus.dll",
Kernel32 = "kernel32.dll", Kernel32 = "kernel32.dll",
Shell32 = "shell32.dll", Shell32 = "shell32.dll",
MsImg = "msimg32.dll"; MsImg = "msimg32.dll",
NTdll = "ntdll.dll";
} }
internal delegate IntPtr HookProc(int code, IntPtr wParam, IntPtr lParam); internal delegate IntPtr HookProc(int code, IntPtr wParam, IntPtr lParam);
@@ -956,5 +957,17 @@ namespace HandyControl.Tools.Interop
public RECT rc; public RECT rc;
public int lParam; 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;
}
} }
} }