2012-05-19 18 views
5

Ich versuche, einen Bildschirm in einem Multi-Monitor-Setup zu identifizieren, um einige Daten zu speichern, die mit diesem Bildschirm verknüpft sind. Wie kann ich einen Bildschirm auch nach einem Neustart zuverlässig identifizieren?Identifizieren von Anzeigen

Ich bin mir der Klasse Screen in .Net bewusst, aber Screen.DeviceName scheint nicht immer auf einen Bildschirm zu zeigen (zum Beispiel nach der Installation eines neuen Grafiktreibers).

+0

Erwarten Sie wirklich, dass Sie in der Lage sind, Ihre Gerätetreiber zu ändern und trotzdem einen bestimmten Bildschirm zu verfolgen? Die wirkliche Frage ist, warum möchten Sie das tun? –

+0

Nun, weil ich ein kleines Multi-Monitor-Tool schreibe und Einstellungen für jeden Bildschirm speichern muss. –

Antwort

0

ich dieses Problem gelöst, indem man die DeviceID mit der EnumDisplayDevices API. Es scheint für jeden Bildschirm einzigartig zu sein und ändert sich nicht nach einem Treiberupdate zum Beispiel.

WMI kommt für mich nicht in Frage, wie ich es vorher versuchte und es gibt nur einen Monitor mit meinem Multi-Monitor-Setup zurück.

0

Versuchen Sie WMI anstelle von WinForms.

Der folgende Beitrag zeigt, wie Monitore und ihre Details zu erhalten (s DisplayDetails Klasse eg.): Monitor ID and Serial Number

Edit:

Mein Vorschlag:

using System.Management; 

ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_DesktopMonitor");  
foreach (ManagementObject obj in searcher.Get()) 
    Console.WriteLine("PNP Device ID: {0}", obj ["PNPDeviceID"]); 
+0

Ich habe zwei Monitore und diese Abfrage gibt nur einen zurück –

Verwandte Themen