Получение информации о мониторе ПК с помощью .NET / WMI - PullRequest
5 голосов
/ 13 августа 2010

Есть ли в любом случае использование WMI / .Net для получения информации о мониторе, такой как производитель, серийный номер, размер монитора и т. Д.?получить эту информацию?

SELECT * FROM Win32_DesktopMonitor действительно не возвращает мне никакой полезной информации в этом случае.

Ответы [ 4 ]

11 голосов
/ 16 августа 2010

Привет, я использую этот инструмент для большей части моей работы с WMI, особенно при создании прототипов и создании POC ....

Генератор кода Microsoft WMI

Этот инструмент отлично подходит для создания быстрого кода консольного приложения для любого запроса wmi или вызова метода в C # и 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);
        }

Приведенный выше код предоставит вам марку и модель монитора.

5 голосов
/ 13 августа 2010

Вы можете попробовать это

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

Приветствия

1 голос
/ 13 августа 2010

Этот запрос выбора должен дать вам то, что вы хотите. Здесь - документация, содержащая детали запроса.

Тогда вы могли бы сделать что-то вроде этого:

    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 голосов
/ 08 ноября 2015

Этот пост , в сочетании с ответом ниже об инструменте управления 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.

...