获取确切的监视器/显示/屏幕名称

Dav*_*inP 0 c# desktop-application winforms

我有一个程序,用户可以选择目标监视器,但是我无法获得真实的监视器名称/型号。

我已经尝试了以下方法:

  • Screen.AllScreens没有用;
  • WMI和Win32 EnumDisplayDevices都返回通用PnP监视器。
  • 设备管理器还显示通用PnP监视器...

在资源管理器中,有显示器的实际名称,在珠穆朗玛峰中,它显示了更深的细节...

这两个程序从哪里获得这些信息?我碰到的最后一个选项是从注册表中解析EDID……有人尝试过此方法吗?

Sor*_*ati 5

嗯,这个问题很旧,但是,为了进行Google重定向,我建议使用“ WindowsDisplayAPI”库。

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


使用该库,有多种获取显示名称的方法。最简单的方法是:

foreach (var display in Display.GetDisplays())
{
    Console.WriteLine(display.DeviceName);
}
Run Code Online (Sandbox Code Playgroud)

但这是使用旧的API,如果您确定程序至少针对Windows Vista,则建议使用以下代码:

foreach (var target in DisplayConfig.PathDisplayTarget.GetDisplayTargets())
{
    Console.WriteLine(target.FriendlyName);
}
Run Code Online (Sandbox Code Playgroud)