Nochmal herzlichen Dank an Meta777, der Denkanstoß über das Monitor Low Level
API war sehr gut. Ich habs damit ohne viel Theater hinbekommen. Zwar braucht man das VESA Monitor Control Command Set (findet der Gockel als PDF) und einen VESA DDC 1.0 kompatiblen Monitor (kann fast jeder Flachglotzer und ein Großteil der Tiefglotzer) aber dann funktioniert das perfekt. Einfach ein
SetVCPFeature(hPhysicalMonitor, $D6, $02)
an den Bildschirm schicken und schon ist er schwarz wie die Nacht, mit
SetVCPFeature(hPhysicalMonitor, $D6, $01)
weckt man ihn wieder auf.
Ich glaub das wird eine richtig nette Implementierung des Monitor
API von Windows. Was mich aber noch irritiert an dem Low Level
API: Pro Monitor-
Handle (HMONITOR) kennt das System wieder eine Menge X an physischen Monitorgeräten, verwendet aus dieser Menge aber immer nur den ersten Eintrag. Ist das jetzt für solche Konfigurationen gedacht, wo ein Bild via Grafiktreiber auf mehrere Monitore verteilt wird? So wie man das manchmal auf Messen oder in Fernsehstudios sieht wo man eine 3x3 oder 4x4 Matrix aus Bildschirmen hat? Das
MSDN gibt dazu jedenfalls keine Auskunft:
Zitat von
MSDN: GetNumberOfPhysicalMonitorsFromHMONITOR function:
Receives the number of physical monitors associated with the monitor
handle.
Ich dachte bisher immer HMONITOR wäre das
Handle zum eigentlichen Bildschirmgerät, weil man darüber auch Details zum Gerät an sich auslesen kann. Jetzt gibt es wieder eine Unterverzweigung. Allerdings liefert
GetNumberOfPhysicalMonitorsFromHMONITOR auf sämtlichen meiner Testsysteme immer nur "0" (bei virtuellen Grafiktreibern) oder "1" (bei echten Videoschnittstellen).
Besteht denn Interesse an einer Veröffentlichung meiner Multimon-Implementierung?