2012-07-05 3 views
9

Wenn Sie im Dialogfeld Bildschirmauflösung auf die Schaltfläche Identifizieren klicken, zeigt Windows Ihnen auf jedem Monitor große weiße Monitornummern an. Es war einfach, sie programmatisch zusammen mit Monitorkoordinaten in Windows XP (mit EnumDisplayDevices) zu finden, aber unter Windows 7 ist es kaputt. Wie kann ich das machen?Wie kann ich Monitore Zahlen aus Bildschirmauflösung in Win7 programmgesteuert erhalten?

  1. EnumDisplayDevices und GetMonitorInfo sind not reliable anymore zu diesem Zweck in Windows 7.
  2. ich GetMonitorInfo versucht und dann Monitornummer aus MONITORINFOEX.szDevice Extrahieren (I.E. \. \ Display2) ohne Erfolg. Ein anderer Typ did that too vor zwei Jahren und behauptete, dass getMonitorInfo einen Fehler hat. This bug wurde von Microsoft ohne Kommentare markiert, aber es kann immer noch auf einem win7-Rechner mit den neuesten Updates reproduziert werden. (Btw, kann mir jemand sagen - vielleicht ist dieser Fehler bei win8 abwesend?)
  3. Ich versuchte QueryDisplayConfig von neuen CCD-API, aber benötigte Informationen nicht gefunden.

Kennt jemand den Weg?

+0

möglich Duplikat [? Wie kann ich Informationen abrufen überwachen] (http://stackoverflow.com/questions/2600255/how-can-i-retrieve-monitor-information) – Deanna

Antwort

1

Ich wollte nie in meinem Windows-Anwendungen die Anzahl der Monitore wissen, aber Sie GetSystemMetrics function mit Parameterwert SM_CMONITORS zu bekommen die Anzahl der Monitore auf einem Desktop aufrufen können.

ich in meinem Windows-Anwendungen aufrufen funktionieren GetSystemMetrics hauptsächlich mit der Parameter SM_CXVIRTUALSCREEN Werte, SM_CYVIRTUALSCREEN, SM_XVIRTUALSCREEN und SM_YVIRTUALSCREEN Fenster öffnen Anwendung vollständig zu vermeiden oder teilweise außerhalb des Anzeigebereichs. Ein Anwendungsfenster könnte dennoch nicht sichtbar sein, wenn der Benutzer den Anzeigebereich über mehrere Monitore erweitert hat, aber nicht alle eingeschaltet sind.

Die SystemParametersInfo function Funktion mit dem Wert SPI_GETWORKAREA für uiAction Parameter ist auch sehr nützlich, zu wissen, wo ein Anwendungsfenster positioniert werden kann und wie groß sie in Breite und Höhe auf Primärsieb sein kann durch andere Fenster (BARS) teilweise verdeckten, ohne daß immer oben.

Siehe auch GetMonitorInfo function, wenn in Ihrer Windows-Anwendung mehr Informationen von den Monitoren benötigt werden.

0

Für Windows-Versionen, die WDDM unter Windows 7 unterstützen, können Sie einfach DXGI verwenden, das Teil von DirectX ist. Mit DXGI können Sie sehr einfach die vorhandenen Grafikkarten, die verfügbaren Bildschirmausgaben pro Adapter und die unterstützten Anzeigemodi pro Bildschirmausgabe auflisten. Während der Aufzählung gibt es eine Menge zusätzlicher Daten, die Sie auslesen können, wie z. B. Handles, Identifikatoren und Gerätenamen. All dies kann leicht verwendet werden, um auch die Arbeitsbereiche abzurufen. Die Reihenfolge, in der Adapter und Ausgänge aufgelistet werden, wird vom System definiert und entspricht der Reihenfolge Ihres Konfigurationsbildschirms.

Sehen Sie hier für weitere Informationen: MSDN DXGI Overview

Verwandte Themen