35

如何轮询窗口以查看连接了哪些监视器以及它们以什么分辨率运行?

4

3 回答 3

62

在 C# 中:ScreenClass表示单个系统上的一个或多个显示设备。你想要这个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());
}
于 2009-10-08T15:43:20.380 回答
6

使用Screen 类

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

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

于 2009-10-08T15:47:05.083 回答
3

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 都会出现新的东西。

于 2009-10-08T15:42:50.177 回答