Wie kann ich Monitore Zahlen aus Bildschirmauflösung in Win7 programmgesteuert erhalten?

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 tun?

  1. EnumDisplayDevices und GetMonitorInfo sind nicht mehr zuverlässig für diesen Zweck in Windows 7.
  2. Ich habe GetMonitorInfo versucht und dann die Monitornummer aus MONITORINFOEX.szDevice (I.E. \. \ Display2) ohne Erfolg extrahiert. Ein anderer Typ tat das auch vor zwei Jahren und behauptete, dass getMonitorInfo einen Fehler hat. Dieser Fehler wurde von Microsoft als behoben markiert irgendwelche Kommentare, aber es kann immer noch auf einer Win7-Maschine mit den neuesten Updates reproduziert werden. (Btw, kann mir jemand sagen - vielleicht ist dieser Fehler bei win8 nicht vorhanden?)
  3. Ich habe QueryDisplayConfig vom neuen CCD versucht API, aber benötigte Informationen nicht gefunden.

Kennt jemand den Weg?

    
boqapt 05.07.2012, 15:57
quelle

2 Antworten

1

Ich wollte in meinen Windows-Anwendungen nie die Anzahl der Monitore wissen, aber Sie können GetSystemMetrics-Funktion mit Parameterwert SM_CMONITORS , um die Anzahl der Anzeigemonitore auf einem Desktop abzurufen.

Ich rufe meine Windows-Anwendungsfunktion GetSystemMetrics hauptsächlich mit den Parameterwerten SM_CXVIRTUALSCREEN , SM_CYVIRTUALSCREEN , SM_XVIRTUALSCREEN und SM_YVIRTUALSCREEN auf, um zu vermeiden, Anwendungsfenster ganz oder teilweise außerhalb des Anzeigebereichs zu öffnen. Ein Anwendungsfenster könnte dennoch nicht sichtbar sein, wenn der Benutzer den Anzeigebereich über mehrere Monitore erweitert hat, aber nicht alle eingeschaltet sind.

Die Funktion SystemParametersInfo funktioniert mit dem Wert SPI_GETWORKAREA für uiAction Parameter ist auch sehr nützlich, um zu wissen, wo ein Anwendungsfenster positioniert werden kann und wie groß es in Breite und Höhe auf dem primären Bildschirm sein kann, ohne teilweise durch andere Fenster (Balken) verdeckt zu sein, die immer oben sind.

Siehe auch GetMonitorInfo-Funktion , wenn weitere Informationen von den Monitoren benötigt werden Ihre Windows-Anwendung.

    
Mofi 25.01.2014 20:07
quelle
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 Ausgaben aufgelistet werden, wird vom System definiert und entspricht der Reihenfolge Ihres Konfigurationsbildschirms.

Weitere Informationen finden Sie hier: MSDN DXGI-Übersicht

    
Coriiander Drewitt 25.01.2015 05:31
quelle