2010-08-13 846 views
5

是否有无论如何使用WMI/.Net来获取显示器信息,如制造商,序列号,显示器大小等?使用.NET/WMI获取PC的显示器信息

使用脚本也是一个选项,或者我可以直接查询注册表以获取此信息?

SELECT * FROM Win32_DesktopMonitor在这种情况下并不真的为我返回任何有用的信息。

回答

5
+1

请编辑链接内容的摘要,以便其他人可以享受你的答案,如果链接被破坏 – 2015-11-08 17:20:40

+0

@TamirVered ...和第一个链接看起来破碎。 – LarsTech 2016-05-20 17:19:59

1

该选择查询应该给你你想要的。 Here是包含查询详细信息的文档。

然后,你可以做这样的事情:

public void GetMonitorDetails() 
    { 
     using(ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DesktopMonitor") 
     { 
      foreach(ManagementObject currentObj in searcher.Get()) 
      { 
      String name = currentObj("Name").ToString(); 
      String device_id = currentObj("DeviceID").ToString(); 
      // ... 
      } 
     } 
    } 
+0

这就是我列出的问题,不工作的查询:)! – mint 2010-08-13 13:23:17

+0

@snow - 查看更新,让我知道如果有帮助 – SwDevMan81 2010-08-13 13:29:11

+0

它并没有给我很多我想要的信息(序列号,监视器大小,它说显示器制造商,但它的价值是:这不是我正在寻找的东西 – mint 2010-08-13 13:31:28

10

嘿,我用这个工具,我的很多WMI工作,原型设计和创造的POC尤其是当....

Microsoft WMI Code Generator

此工具,用于创建快速的控制台应用程序代码是伟大的在C#和VB.NET中任何wmi查询或方法调用

try 
     { 
      ManagementObjectSearcher searcher = 
       new ManagementObjectSearcher("root\\CIMV2", 
       "SELECT * FROM Win32_DesktopMonitor"); 

      foreach (ManagementObject queryObj in searcher.Get()) 
      { 
       Console.WriteLine("-----------------------------------"); 
       Console.WriteLine("Win32_DesktopMonitor instance"); 
       Console.WriteLine("-----------------------------------"); 
       Console.WriteLine("Description: {0}", queryObj["Description"]); 
      } 
     } 
     catch (ManagementException e) 
     { 
      MessageBox.Show("An error occurred while querying for WMI data: " + e.Message); 
     } 

上面的代码将为您带来显示器的品牌和型号。

0

This post,结合以下有关WMI管理工具的答案,我的答案是。这是返回您的显示器分辨率的代码。

try {     
     ManagementObjectSearcher searcher = 
      new ManagementObjectSearcher("root\\WMI", 
      "SELECT * FROM WmiMonitorBasicDisplayParams");  

     foreach (ManagementObject queryObj in searcher.Get()) { 
      Debug.WriteLine("-----------------------------------"); 
      Debug.WriteLine("WmiMonitorBasicDisplayParams instance"); 
      Debug.WriteLine("-----------------------------------"); 
      Debug.WriteLine("Description: {0}", queryObj["SupportedDisplayFeatures"]); 
     } 
    } catch (ManagementException e) { 
     MessageBox.Show("An error occurred while querying for WMI data: " + e.Message); 
    } 

在我的情况下,我仍然卡住,因为它返回每个显示器的“缩小”分辨率。其中一个是4K显示器,报告为2560x1440。