Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Multi-Monitor-Umgebung: Bestimmten Monitor abschalten (https://www.delphipraxis.net/172168-multi-monitor-umgebung-bestimmten-monitor-abschalten.html)

haentschman 19. Dez 2012 08:13

AW: Multi-Monitor-Umgebung: Bestimmten Monitor abschalten
 
Spontan würde ich sagen über das monitoreigene Menü... (ausnahmsweise per Hand) 8-)

Tonic1024 19. Dez 2012 08:18

AW: Multi-Monitor-Umgebung: Bestimmten Monitor abschalten
 
Der kann nur Helligkeit und Kontrast. Reset setzt zwar diese Einstellungen zurück aber ändert nichts an der Farbe.

Habs mit Try & Error über das Programm wieder brauchbar bekommen... Auch wenn ich das gefühl hab der Eine tut jetzt in den Augen weh. Muss vielleicht noch mal mit dem Kontrast herumspielen.

Scheint als hätte der Monitor-Hersteller am OSD gespart.

haentschman 19. Dez 2012 08:20

AW: Multi-Monitor-Umgebung: Bestimmten Monitor abschalten
 
Dann hätten wir noch in den Anzeigeeinstellungen "Farbkalibrierung". Das ist eine Art Wizzard... (W7)

Codehunter 19. Dez 2012 08:57

AW: Multi-Monitor-Umgebung: Bestimmten Monitor abschalten
 
@Meta777: Vielen Dank für den kleinen Denkanstoss! Ich wußte gar nicht dass es ein Low-Level-Monitor-API gibt. Da geht ja so einiges was ich mir vorgestellt hatte (sofern es der Monitor und dessen Verkabelung unterstützt). GetMonitorCapabilities dürfte für mich der richtige Einstieg sein.

Zwar wird das Ganze erst ab Vista unterstützt, aber so langsam finde ich mich damit ab dass Vista jetzt das älteste noch zu unterstützende Windows ist.

EDIT: @Tonic1024:
Du bist jetzt wahrscheinlich über genau das selbe gestolpert was ich in einem früheren Post hier schon geschrieben habe: Windows wirft die Grafikkarte und den Monitor "gedanklich" manchmal in einen Topf. Man ändert eine Einstellung (in deinem Fall Helligkeit oder Gamma) und muss sich da ganz genau überlegen, welches Device das dann tut - technisch könnten es nämlich beide: Graka und Monitor.

Codehunter 19. Dez 2012 12:53

AW: Multi-Monitor-Umgebung: Bestimmten Monitor abschalten
 
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
Delphi-Quellcode:
SetVCPFeature(hPhysicalMonitor, $D6, $02)
an den Bildschirm schicken und schon ist er schwarz wie die Nacht, mit
Delphi-Quellcode:
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:

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?

Meta777 20. Dez 2012 08:55

AW: Multi-Monitor-Umgebung: Bestimmten Monitor abschalten
 
Zitat:

Zitat von Tonic1024 (Beitrag 1195993)
Ich muss vor dem oben stehenden Code warnen. Er ist unvollständig. Bei dem Versuch herauszufinden wie er funktioniert hab ich auf meinem ersten Monitor, wie es scheint, den Gamma-Wert so hoch geschraubt, dass er beinahe nur noch weiss ist und mein zweiter Monitor ist rosa eingefärbt.

Wie stellt man auf default zurück?

Toni

Sorry Tonic1024,

falls du es nicht schon gefunden hast kannst du mit den Factory Reset Codes aus der Tabelle 8.1 des Bei Google suchenVESA Monitor Control Command Set die Einstellungen wieder reseten. Ich habe auch mal die Mods informiert, dass Sie eine Warnung in meinen Beitrag schrieben (Selbst bearbeiten kann ich ihn nicht mehr).

Shalom

Tonic1024 20. Dez 2012 09:12

AW: Multi-Monitor-Umgebung: Bestimmten Monitor abschalten
 
Kein Beinbruch... Man muss sich nur im klaren sein was man tut wenn man blindlinks Messages durch die Gegend Feuert. :-D

Codehunter 20. Dez 2012 10:43

AW: Multi-Monitor-Umgebung: Bestimmten Monitor abschalten
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, neue Version, neues Glück:

Wenn man jetzt den Reiter "VESA MCCS" anklickt hat man die Power-Buttons (aufpassen, dass man nicht den abschaltet wo man das Fenster vom Testprogramm hat) und exemplarisch einen Regler für die Helligkeit. Wenn man den verschiebt und anschließend mal im OSD des Monitors nachschaut, dann ändert man mit dem Regler wirklich die Monitoreinstellungen, nicht die von der Grafikkarte. Man sollte sich aber ggf. vorher den eingestellten Wert merken, damit man ihn hinterher per OSD wieder genauso einstellen kann. Die Trackbar ist ja nur ein Schätzeisen.

Der Helligkeitsregler steht nur stellvertretend für eine ganze Reihe von Optionen, die von VESA MCCS unterstützt werden. Es hängt aber auch davon ab, welches Subset davon von der Monitor-Firmware unterstützt wird.

Wichtig: Die V4 unterstützt Windows XP nicht mehr!

Tonic1024 20. Dez 2012 11:10

AW: Multi-Monitor-Umgebung: Bestimmten Monitor abschalten
 
Wenn ich einen Monitor auswähle bekomme ich eine AV. Helligkeit lässt sich danach regeln. Monitorpower klappt nicht. Keine Meldung, keine Reaktion.

Gruß,

Toni

Codehunter 20. Dez 2012 11:23

AW: Multi-Monitor-Umgebung: Bestimmten Monitor abschalten
 
@Tonic: Welches Betriebssystem? Die AV könnte daher kommen, dass ich ein paar EXTERNALs drin habe und dein OS keine passende DLL hat. Ich habs auf Win 7 x64 laufen ohne AV. Wenn Helligkeit funzt und Power nicht könnte es sein, der Bildschirm kann den MCCS-Befehl nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:24 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz