Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 给定屏幕的有效分辨率列表?_C#_Resolution - Fatal编程技术网

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

C# 给定屏幕的有效分辨率列表?,c#,resolution,C#,Resolution,有没有办法获得给定屏幕的所有有效分辨率 我目前有一个下拉列表,其中填充了所有有效屏幕(使用Screen.AllScreens)。当用户选择一个屏幕时,我想为他们提供第二个下拉列表,列出该显示的所有有效分辨率(不仅仅是当前分辨率)。以下链接包含详细的代码示例: 任务2:更改显示分辨率 以下链接包含此功能的详细代码示例: 任务2:更改显示分辨率 我认为应该可以通过使用获取信息。WMI可以从.NET使用命名空间中的类进行访问 var scope = new ManagementScope(); va

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


我目前有一个下拉列表,其中填充了所有有效屏幕(使用Screen.AllScreens)。当用户选择一个屏幕时,我想为他们提供第二个下拉列表,列出该显示的所有有效分辨率(不仅仅是当前分辨率)。

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

任务2:更改显示分辨率

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

任务2:更改显示分辨率

我认为应该可以通过使用获取信息。WMI可以从.NET使用命名空间中的类进行访问

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"]);
    }
}
解决方案将类似于以下内容。我不太了解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"]);
    }
}

我认为应该有可能利用计算机获取信息。WMI可以从.NET使用命名空间中的类进行访问

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"]);
    }
}
解决方案将类似于以下内容。我不太了解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"]);
    }
}

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

但是,以下问题的验证答案很好:


多亏了Vimvq1987,公认的答案似乎在Windows 8.1上不起作用,至少在我的机器上是如此。查询运行正常,但结果中有0个条目。考虑到Bijoy K Jose的评论,我想我不是唯一一个

但是,以下问题的验证答案很好:


感谢Vimvq1987

感谢您的回复。我已经为此奋斗了一段时间了。根据你上面的回答,我不知道它与单个屏幕有什么关系。使用双显示器设置,我的视频卡最多可支持1900x1200,但我连接的显示器最大支持1280x1024。我不知道如何查询单个显示器的分辨率…您必须搜索可用的WMI类。。。我很有信心,有一个类提供了您正在寻找的信息。转到并搜索这些类。@DanielBrückner:如何使这些代码与windows 8一起工作?感谢您的回复Daniel。我已经为此奋斗了一段时间了。根据你上面的回答,我不知道它与单个屏幕有什么关系。使用双显示器设置,我的视频卡最多可支持1900x1200,但我连接的显示器最大支持1280x1024。我不知道如何查询单个显示器的分辨率…您必须搜索可用的WMI类。。。我很有信心,有一个类提供了您正在寻找的信息。转到并搜索这些类。@DanielBrückner:如何使这些代码与windows 8一起工作?