Получить точный монитор / дисплей / имя экрана

У меня есть программа, в которой пользователь выбирает целевой монитор, но я просто не могу получить настоящее имя / модель монитора.

Я уже пробовал следующее:

  • Screen.AllScreens бесполезен;
  • WMI и Win32 EnumDisplayDevices оба возвращают универсальный монитор PnP;
  • Диспетчер устройств также показывает Generic PnP Monitor...

В проводнике есть настоящие названия мониторов, а в Эвересте он показывает еще больше деталей...

Откуда эти 2 программы получают эту информацию? Последний вариант, с которым я столкнулся, - это разбор EDID из реестра... кто-нибудь пробовал это, и это работало?

2 ответа

Ну, этот вопрос старый, однако, что касается перенаправлений Google, я предлагаю библиотеку WindowsDisplayAPI.

https://www.nuget.org/packages/WindowsDisplayAPI


Используя библиотеку, есть несколько способов получить отображаемое имя. Самый простой способ это:

foreach (var display in Display.GetDisplays())
{
    Console.WriteLine(display.DeviceName);
}

Но для этого используется старый API, если вы уверены, что ваша программа ориентирована как минимум на Windows Vista, я предлагаю следующий код:

foreach (var target in DisplayConfig.PathDisplayTarget.GetDisplayTargets())
{
    Console.WriteLine(target.FriendlyName);
}

Похоже, что на этот вопрос уже можно было ответить в другом вопросе: как получить фактическое имя монитора, как показано в диалоговом окне разрешения

Другие вопросы по тегам