本文共 2192 字,大约阅读时间需要 7 分钟。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Runtime.InteropServices;using System.Drawing;namespace RSS_STAND_ALONE{ public class SystemInfo { public virtual ListGetMonitorPnpDeviceId() { List rt = new List (); using (System.Management.ManagementClass mc = new System.Management.ManagementClass("Win32_DesktopMonitor")) { using (System.Management.ManagementObjectCollection moc = mc.GetInstances()) { foreach (var o in moc) { var each = (System.Management.ManagementObject)o; object obj = each.Properties["PNPDeviceID"].Value; if (obj == null) continue; rt.Add(each.Properties["PNPDeviceID"].Value.ToString()); } } } return rt; } public virtual byte[] GetMonitorEdid(string monitorPnpDevId) { return (byte[])Microsoft.Win32.Registry.GetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\" + monitorPnpDevId + @"\Device Parameters", "EDID", new byte[] { }); } //获取显示器物理尺寸(cm) public virtual SizeF GetMonitorPhysicalSize(string monitorPnpDevId) { byte[] edid = GetMonitorEdid(monitorPnpDevId); if (edid.Length < 23) return SizeF.Empty; return new SizeF(edid[21], edid[22]); } //通过屏显示器理尺寸转换为显示器大小(inch) public static float MonitorScaler(SizeF moniPhySize) { double mDSize = Math.Sqrt(Math.Pow(moniPhySize.Width, 2) + Math.Pow(moniPhySize.Height, 2)) / 2.54d; return (float)Math.Round(mDSize, 1); } public static void Debug() { SystemInfo sysInfo = new SystemInfo(); string id = sysInfo.GetMonitorPnpDeviceId()[0]; SizeF size = sysInfo.GetMonitorPhysicalSize(id); System.Windows.Forms. MessageBox.Show(SystemInfo.MonitorScaler(size).ToString() + @"寸"); } }}
转载地址:http://cljub.baihongyu.com/