代码之家  ›  专栏  ›  技术社区  ›  Crash893

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

  •  25
  • Crash893  · 技术社区  · 16 年前

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

    3 回复  |  直到 16 年前
        1
  •  62
  •   Joe Koberg    13 年前

    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());
    }
    
        2
  •  6
  •   SLaks    16 年前

    使用 Screen class .

    您可以看到中的所有监视器 Screen.AllScreens 数组,并使用 Bounds 财产。

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

        3
  •  3
  •   somacore    16 年前

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

    GetSystemMetrics是一个方便的函数,可以用来获取各种全局维度,比如图标的大小或窗口标题的高度。在Windows 2000中,有一些新参数,如SM_CXVIRTUALSCREEN和SM_CYVIRTUALSCREEN,用于获取多个监控系统屏幕的虚拟大小。Windows新手和专业人士应该查看GetSystemMetrics的文档,以查看您可以获得的所有不同的系统指标(维度)。请参阅平台SDK以获取最新的 http://msdn.microsoft.com/library/en-us/sysinfo/sysinfo_8fjn.asp