2013-02-20 168 views
0

我有一個程序,用戶選擇目標顯示器,但我不能得到真正的顯示器 名稱/型號。獲取精確的顯示器/顯示/屏幕名稱

我已經試過如下:

  • Screen.AllScreens是沒有用的;
  • WMI和Win32 EnumDisplayDevices都返回Generic PnP Monitor;
  • 設備管理器也顯示了通用即插即用監視器...

在資源管理器中有連接的顯示器,並在珠峯實際的名稱,它顯示細節更加深入......

從哪裏這些2個程序獲取這些信息?我遇到的最後一個選項 是從註冊表中解析EDID ...有沒有人試過這個,並做到了這一點?

+4

在你得意忘形有了這個,你將如何處理這兩個顯示器完全相同的品牌和型號的非常常見的情況? – 2013-02-20 20:18:39

+0

我並不擔心這一點......我想,我可以根據屏幕邊界確定屏幕的位置,例如。左邊,右邊等。如果只有兩個,我可以將主要附加到主要的一個。但在我掌握這些之前,我必須先獲得這些信息。 – DavorinP 2013-02-20 21:00:28

+0

可能的重複[如何獲取實際的監視器名稱?如解析對話框中所示](http://stackoverflow.com/questions/4958683/how-do-i-get-the-actual-monitor-name-as-seen-in-the-resolution-dialog) – 2015-01-31 23:45:39

回答

3

嗯,這個問題是舊的,然而,作爲谷歌的重定向起見,我建議「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); 
}