2010-08-13 847 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。