2010-08-13 4 views
5

Gibt es trotzdem WMI/.Net, um Monitorinformationen wie Hersteller, Seriennummer, Monitorgröße usw. zu erfassen?PC-Monitor-Informationen mit .NET/WMI erhalten

Die Verwendung eines Skripts ist auch eine Option, oder kann ich die Registrierung direkt abfragen, um diese Informationen zu erhalten?

SELECT * FROM Win32_DesktopMonitor liefert keine wirklich nützliche Informationen für mich in diesem Fall.

Antwort

5

Sie können diese

http://myitforum.com/cs2/blogs/rzander/archive/2009/03/30/wmi-provider-to-list-the-monitors-serialnr-and-model-name.aspx

auch versuchen, verwende ich WMI Explorer für WMI-Einstellungen zu überprüfen, um

http://www.ks-soft.net/hostmon.eng/wmi/index.htm

Prost

+1

Bitte bearbeiten Sie mit einer Zusammenfassung des Inhalts des Links, so dass andere Leute genießen können Deine Antwort wenn der Link kaputt geht –

+0

@TamirVered ... und der erste Link sieht kaputt aus. – LarsTech

1

Diese Select-Abfrage sollte Ihnen geben, was Sie wollen. Here ist die Dokumentation, die die Details der Abfrage enthält.

Dann könnten Sie so etwas tun:

public void GetMonitorDetails() 
    { 
     using(ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DesktopMonitor") 
     { 
      foreach(ManagementObject currentObj in searcher.Get()) 
      { 
      String name = currentObj("Name").ToString(); 
      String device_id = currentObj("DeviceID").ToString(); 
      // ... 
      } 
     } 
    } 
+0

Das ist die Abfrage, die ich in der Frage aufgelistet habe, die nicht funktioniert :)! – mint

+0

@snow - Siehe Update, lassen Sie mich wissen, wenn das hilft – SwDevMan81

+0

Es gibt mir nicht viele der Informationen, die ich suche (Serial #, Monitor Size, es sagt Monitor Hersteller, aber es ist Wert ist: mint

10

Hey, ich benutze dieses Tool für viele meiner WMI Arbeit, vor allem, wenn das Prototyping und POCs zu schaffen ....

Microsoft WMI Code Generator

Dieses Tool für die Erstellung für schnelle Konsole App-Code ist groß jede WMI-Abfrage oder Methodenaufruf in C# und VB.NET

try 
     { 
      ManagementObjectSearcher searcher = 
       new ManagementObjectSearcher("root\\CIMV2", 
       "SELECT * FROM Win32_DesktopMonitor"); 

      foreach (ManagementObject queryObj in searcher.Get()) 
      { 
       Console.WriteLine("-----------------------------------"); 
       Console.WriteLine("Win32_DesktopMonitor instance"); 
       Console.WriteLine("-----------------------------------"); 
       Console.WriteLine("Description: {0}", queryObj["Description"]); 
      } 
     } 
     catch (ManagementException e) 
     { 
      MessageBox.Show("An error occurred while querying for WMI data: " + e.Message); 
     } 

der obige Code erhalten Sie die Marke und das Modell des Monitors erhalten.

0

This post, kombiniert mit der Antwort unten über das WMI-Management-Tool hatte meine Antwort. Hier ist der Code, der Ihre Bildschirmauflösungen zurückgibt.

try {     
     ManagementObjectSearcher searcher = 
      new ManagementObjectSearcher("root\\WMI", 
      "SELECT * FROM WmiMonitorBasicDisplayParams");  

     foreach (ManagementObject queryObj in searcher.Get()) { 
      Debug.WriteLine("-----------------------------------"); 
      Debug.WriteLine("WmiMonitorBasicDisplayParams instance"); 
      Debug.WriteLine("-----------------------------------"); 
      Debug.WriteLine("Description: {0}", queryObj["SupportedDisplayFeatures"]); 
     } 
    } catch (ManagementException e) { 
     MessageBox.Show("An error occurred while querying for WMI data: " + e.Message); 
    } 

In meinem Fall bin ich immer noch fest, weil es die "verkleinerte" Auflösung jedes Monitors zurückgibt. Einer von mir ist eine 4K-Anzeige, die als 2560x1440 gemeldet wird.