Get PC's Monitor Information Using .NET / WMI

前端 未结 4 1372
余生分开走
余生分开走 2021-01-13 00:30

Is there anyway using WMI/.Net to grab monitor information such as Manufacturer, Serial Number, Monitor Size etc.?

Using a script is an option as well, or can I quer

相关标签:
4条回答
  • 2021-01-13 01:01

    Hey, I use this tool for a lot of my WMI work, especially when prototyping and creating POCs....

    Microsoft WMI Code Generator

    This tool is great for creating quick console app code for any wmi query or method invocation in both C# and VB.NET

    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);
            }
    

    The code above will get you the make and model of the monitor.

    0 讨论(0)
  • 2021-01-13 01:09

    That select query should give you what you want. Here is the documentation which contains the details of the query.

    Then you could do something like this:

        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 讨论(0)
  • 2021-01-13 01:10

    This post, combined with the answer below about the WMI management tool had my answer. Here is the code that returns your monitor resolutions.

    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);
        }
    

    In my case, I'm still stuck, because it is returning the "scaled down" resolution of each monitor. One of mine is a 4K display, being reported as 2560x1440.

    0 讨论(0)
  • 2021-01-13 01:11

    You may want to try this

    https://raw.githubusercontent.com/MaxAnderson95/Get-Monitor-Information/master/Get-Monitor.ps1

    Cheers

    0 讨论(0)
提交回复
热议问题