查找所有监视器的编号和分辨率

时间:2009-10-08 15:38:32

标签: c# windows monitor resolutions

如何轮询窗口以查看连接的监视器以及它们运行的​​分辨率?

3 个答案:

答案 0 :(得分:46)

在C#中:Screen Class表示单个系统上的显示设备或多个显示设备。您需要Bounds属性。

foreach(var screen in Screen.AllScreens)
{
    // For each screen, add the screen properties to a list box.
    listBox1.Items.Add("Device Name: " + screen.DeviceName);
    listBox1.Items.Add("Bounds: " + screen.Bounds.ToString());
    listBox1.Items.Add("Type: " + screen.GetType().ToString());
    listBox1.Items.Add("Working Area: " + screen.WorkingArea.ToString());
    listBox1.Items.Add("Primary Screen: " + screen.Primary.ToString());
}

答案 1 :(得分:5)

使用Screen class

您可以查看Screen.AllScreens数组中的所有监视器,并使用Bounds属性检查每个监视器的分辨率和位置。

请注意,某些视频卡会将两台显示器合并为一个非常宽的屏幕,因此Windows认为只有一台显示器。如果你愿意,你可以检查屏幕的宽度是否超​​过其高度的两倍;如果是这样,它可能是一个横向跨度,您可以将其视为两个相等的屏幕。但是,这更复杂,您不需要这样做。垂直跨度也得到支持,但不太常见。

答案 2 :(得分:2)

http://msdn.microsoft.com/en-us/magazine/cc301462.aspx

GetSystemMetrics是一个方便的功能,您可以使用它来获取各种全局尺寸,例如图标的大小或窗口标题的高度。在Windows 2000中,有一些新参数,如SM_CXVIRTUALSCREEN和SM_CYVIRTUALSCREEN,可以获取多个监视器系统的屏幕虚拟大小。 Windows新手和专业人士也应查看GetSystemMetrics的文档,以查看可以获得的所有不同系统指标(维度)。有关http://msdn.microsoft.com/library/en-us/sysinfo/sysinfo_8fjn.asp的最新信息,请参阅Platform SDK。 GetSystemMetrics是您经常需要使用的一个方便的功能,每个版本的Windows都会出现新的东西。