如何用C#获取电脑屏幕的物理尺寸?

电脑屏幕的物理尺寸就是一个电脑屏幕实际的宽度和高度,可以用尺寸度量的。

 

网上有很多介绍获取获取电脑屏幕的物理尺寸的方法,但是大多都是错的。

 

要想知道自己的电脑屏幕的真实物理尺寸,可以安装一个【鲁大师】,然后通过【硬件检测】,在显示器信息中可以显示屏幕的物理尺寸,如下图所示:

 

 

那么这个屏幕的物理尺寸是从哪里获得的呢?

 

最可靠的办法是通过显示器的驱动程序中显示的EDID数据来获取。

 

关于EDID的详细解释可以看这个链接

 

我们只要知道的是,EDID是个字节数组,里面的22字节和23字节分别表示的是以厘米显示的显示器的水平的宽和垂直的高。

 

这个EDID是位于注册表键 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\DISPLAY  中。

 

通过上述的知识,就可以通过如下的C#代码获取电脑屏幕的准确物理尺寸:

 

string[] arr;
RegistryKey rk;
rk = Registry.LocalMachine.OpenSubKey(@”SYSTEM\ControlSet001\Enum\DISPLAY”);
arr = rk.GetSubKeyNames();
string sName1 = arr[0];
rk = Registry.LocalMachine.OpenSubKey(@”SYSTEM\ControlSet001\Enum\DISPLAY\” + sName1);
arr = rk.GetSubKeyNames();
string sName2 = arr[0];
rk = Registry.LocalMachine.OpenSubKey(@”SYSTEM\ControlSet001\Enum\DISPLAY\” + sName1 + @”\” + sName2);
arr = rk.GetSubKeyNames();
string sName3 = arr[0];
string sTN = @”SYSTEM\ControlSet001\Enum\DISPLAY\” + sName1 + @”\” + sName2 + @”\” + sName3;
rk = Registry.LocalMachine.OpenSubKey(sTN);
byte[] arr1 = (byte[])rk.GetValue(“EDID”);
MessageBox.Show(“你的显示器是” + arr1[21] + “厘米宽,” + arr1[22] + “厘米高”);

 

       

发表评论