Antwort schreiben

Foren -> UltraMon™ -> Skalierung und Display-Profile
Johnny   2021-08-31 16:21
Hallo.

Habe ein hochauflösendes Display im Notebook. Direkt am Notebook arbeite ich mit einer Skalierung von 100%.

Am Schreibtisch ist das Notbook gleichzeitig zweiter Bildschirm (mehr Entfernung zu den Augen), und muß daher mit einer höheren Skalierung (150%) laufen.

Ultramon ist soweit gut, daß es mit Displayprofile mit individuellen Auflösungen für verschiedene Umgebungen ermöglicht. Jedoch finde ihc keine Möglichkeit, um die Skalierung in einem Profil zu speichern. Ubersehe ich etwas?

Aktuell ist es so:
Notebook standalone auf 100% Skalierung benutzt.
Dann Notebook an Schreibtisch, Displayprofil über Ultramon aktiviert, aber Skalierung des Notebook-Bildschirms muß noch immer manuell in Windows auf 150% geändert werden.
Wenn dann wieder Standalone-Betrieb, manuelle Änderung der Skalierung auf 100% notwendig. Übersehe ich etwas, oder kann Ultramon das einfach (noch) nicht.

Wenn UltraMon das noch nicht kann, ist das hier ein Feature-Request und gleichzeitig eine Frage, wie ich das alternativ produktiv lösen kann, ohne jedes Mal in den Windows-Display-Einstellungen die Skalierung manuell ändern zu müssen.
Christian Studer   2021-09-01 16:49
Ist machbar, aber etwas kompliziert. UltraMon unterstützt das nicht, aber ich habe mal für einen Kunden ein Skript gemacht welches einen Monitor zwischen zwei verschiedenen Skalierungen umschaltet.

Um das Skript für dich anzupassen müsste ich folgende Daten aus der Registry haben:

unter HKEY_CURRENT_USER\Control Panel\Desktop\PerMonitorSettings, den Namen des Schlüssels für den Monitor. Der Schlüssel hat einen Wert, DpiValue, der ändert wenn du die Skalierung änderst, ich müsste die Werte bei 100% und 150% haben.
Falls nicht offensichtlich ist welcher Schlüssel zum internen Monitor gehört kannst du die Skalierung ändern und dann schauen bei welchem Schlüssel sich der DpiValue Wert geändert hat.

Christian Studer - www.realtimesoft.com
Johnny   2021-11-07 05:56
Danke für die Info.

Habe die Nachricht erst eben (Monate später) gelesen, weil mich das immer noch extrem stört, daß ich nicht automatisiert die Skalierung ändern kann, und auf der Suche nach einer Lösung bin.

Schade, daß das in UltraMon nicht implementiert ist. Ich denke damals, als das Programm programmiert wurde, war die Skalierung noch nicht wichtig.

Gibt es denn neuere/andere Programme, wie UltraMon, die aber die Skalierung mit einbeziehen? Ich vermute, ein UltraMon-Update ist nicht angedacht, da die letzte Version mittlerweile mehrere Jahre alt ist und die Nachfrage vermutlich zu gering. Liege ich da richtig?

Zu dem Script: Habe mit Prozess-Explorer mal Snapshots erstellt, und dann die Skalierung geändert. Es ist nicht nur ein Wert, der sich da ändert...

Hier mal ein Vergleich:
Reg Val Changed HKCU\Control Panel\Desktop\PerMonitorSettings\CSO16000_00_07E4_02^05ED0497BA0D80AF0BE74141F6A4116D\DpiValue "-2" (old value="-1") Reg Val Changed HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search\JumplistData\308046B0AF4A39CB "132807662408284643" (old value="132807661208249736") Reg Val Changed HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\VFUProvider\StartTime "132807662400107399" (old value="132807661800039120") Reg Val Changed HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Notifications\Data\418A073AA3BC3475 "BINARY SIZE=628 MD5=646C739522D7EAF704D12629CAACB248" (old value="BINARY SIZE=628 MD5=C07A8948CCE3A2AC7F0CAEC248D5A824") Reg Val Changed HKLM\SYSTEM\ControlSet001\Control\GraphicsDrivers\ScaleFactors\CSO16000_00_07E4_02^05ED0497BA0D80AF0BE74141F6A4116D\DpiValue "-2" (old value="-1") Reg Val Changed HKLM\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\ScaleFactors\CSO16000_00_07E4_02^05ED0497BA0D80AF0BE74141F6A4116D\DpiValue "-2" (old value="-1")
Christian Studer   2021-11-09 13:58
Ich habe das Skript heraufgeladen: SwitchDpi2.vbs, dazu brauchst du noch ReApplyDispSettings.exe. Beides im selben Ordner speichern, das Skript wechselt dann zwischen den beiden Einstellungen.

Für das Skript habe ich angenommen dass der interne Monitor die Nummer 1 hat, falls nicht kannst du das Skript in einem Texteditor öffnen und dann MON_ID auf der ersten Zeile ändern.

Wäre schon ein Feature für UltraMon, im Moment sehe ich aber nicht wie das möglich wäre, z. B. sind die Werte in der Registry nur relativ, bei dir ist 100% anscheinend -1, beim anderen Kunden war es 0.

Christian Studer - www.realtimesoft.com
Johnny   2021-11-14 05:39
Danke!

Wenn ich manuell in die Registry schaue, ist der Wert Hexadezimal.

Bei 100% ist DpiValue "fffffffe"
Bei 125% ist DpiValue "ffffffff"

Müsste das Skript dann auch die Hexadezimalen Zahlen schreiben?

Was mich wundert: Ich bekomme aktuell einen Fehler beim Ausführen der exe:
"Invalid monitor number."

In den Bildschirmeinstellungen ist der im Script angegebene Monitor (CSO1600...) Bildschirm "1".

Unglaublich, daß Microsoft das so kompliziert macht...
Johnny   2021-11-14 05:52
Ich habe endlich noch etwas anderes gefunden. Ggf. interessant, auch im Bezug auf ein mögliches UltraMon-Update?

https://github.com/imniko/SetDPI

Habe testweise zu der exe eine Verknüpfung gemacht. Mit einem Klick ändere ich (abhängig von den Befehlen in der Verknüpfung) die Skalierung auf dem gewünschten Monitor. So weit, so vielversprechend.
Christian Studer   2021-11-16 03:27
Das spielt keine Rolle, 0xffffffff ist hexadezimal für -1.

Du musst nur das Skript ausführen, das ruft dann ReApplyDispSettings.exe mit dem korrekten Argument auf.

SetDPI werde ich anschauen.

Christian Studer - www.realtimesoft.com
Foren -> UltraMon™ -> Skalierung und Display-Profile

Antwort schreiben