给定屏幕的有效分辨率列表?

时间:2009-10-06 21:43:54

标签: c# resolution

有没有办法获得给定屏幕的所有有效分辨率?

我目前有一个下拉列表,其中包含所有有效屏​​幕(使用 Screen.AllScreens )。当用户选择一个屏幕时,我想向他们展示第二个下拉列表所有该显示的有效分辨率(只是当前分辨率)。

3 个答案:

答案 0 :(得分:1)

我认为应该可以使用Windows Management Instrumentation (WMI)获取信息。可以使用.NET System.Management命名空间中的类从.NET访问WMI。

解决方案将类似于以下内容。我不太了解WMI,也无法立即找到您要查找的信息,但我找到了视频卡支持的分辨率的WMI类。该代码需要引用System.Management.dll并导入System.Management命名空间。

var scope = new ManagementScope();

var query = new ObjectQuery("SELECT * FROM CIM_VideoControllerResolution");

using (var searcher = new ManagementObjectSearcher(scope, query))
{
    var results = searcher.Get();

    foreach (var result in results)
    {
        Console.WriteLine(
            "caption={0}, description={1} resolution={2}x{3} " +
            "colors={4} refresh rate={5}|{6}|{7} scan mode={8}",
            result["Caption"], result["Description"],
            result["HorizontalResolution"],
            result["VerticalResolution"],
            result["NumberOfColors"],
            result["MinRefreshRate"],
            result["RefreshRate"],
            result["MaxRefreshRate"],
            result["ScanMode"]);
    }
}

答案 1 :(得分:0)

以下链接包含详细的代码示例:

任务2:更改显示分辨率
http://msdn.microsoft.com/en-us/library/aa719104(VS.71).aspx#docum_topic2

答案 2 :(得分:0)

接受的答案在Windows 8.1上似乎不起作用,至少在我的机器上是这样。查询运行正常,但结果中有0个条目。考虑到Bijoy K Jose的评论,我想我不是唯一一个。

然而,以下问题的经过验证的答案很好: How to list available video modes using C#?

感谢Vimvq1987