Получить точный монитор / дисплей / имя экрана
У меня есть программа, в которой пользователь выбирает целевой монитор, но я просто не могу получить настоящее имя / модель монитора.
Я уже пробовал следующее:
- 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);
}
Похоже, что на этот вопрос уже можно было ответить в другом вопросе: как получить фактическое имя монитора, как показано в диалоговом окне разрешения