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一起工作?