Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#15

AW: Multi-Monitor-Umgebung: Bestimmten Monitor abschalten

  Alt 19. Dez 2012, 13:53
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?
  Mit Zitat antworten Zitat