DPI-Skalierung in Windows 8.1 über die Befehlszeile

14

Ich möchte eine Tastenkombination erstellen, mit der ich die DPI-Skala auf meinem Computer schnell und einfach ändern kann, indem ich ein kleines Makro erstelle, das bei Erkennung der Tastenkombination ausgeführt wird.

In Windows 8.1 kann die DPI-Skala der Desktop-Anzeige über das Bedienfeld (siehe Abbildung unten) eingestellt werden und ist sofort wirksam. Alternativ kann die Skalierung manuell in der Registrierung festgelegt werden. Hierzu muss sich der Benutzer jedoch anmelden und den Computer abmelden oder neu starten, damit die Skalierung wirksam wird (und die Option "Eine Skalierungsstufe für alle meine Anzeigen" wird nur imitiert). .

Wie kann ich die DPI-Skala über die Befehlszeile oder auf andere Weise programmgesteuert einstellen?

http://puu.sh/93YLV.jpg

FThompson
quelle
Haben Sie versucht, die Registrierung zu ändern, den Explorer-Prozess zu beenden und ihn dann erneut zu starten? Denn das ist alles, was die GUI-Methode theoretisch tun würde.
Ramhound
@ Ramhound Kein Glück. Die GUI-Oberfläche aktualisiert auf jeden Fall den Desktop, um die Einstellung zu übernehmen, aber ich bin nicht sicher, was und konnte nichts dazu finden.
FThompson
Sind Sie sicher, dass die Änderungen sofort wirksam werden? Ich erhalte den Dialog "Sie müssen sich von Ihrem Computer
abmelden
@ Vinayak, Die Änderungen werden sofort wirksam, wenn sie vom obigen Dialogfeld übernommen werden. Ich erinnere mich, dass ich gelesen habe, dass die Sofortanwendung für Windows 8.1 neu gegenüber der Standardanwendung für Windows 8 ist. Wenn Sie also daran interessiert sind, den Unterschied zwischen Ihrem Computer und meinem zu untersuchen, könnte dies ein Ausgangspunkt sein.
FThompson
@ Vulcan Eigentlich verwende ich Windows 8.1. Ich habe jedoch versucht, Änderungen vorzunehmen, nachdem ich auf das Let me choose one scaling level...Kontrollkästchen geklickt habe, da der Schieberegler darüber in meinem Notizbuch ausgegraut ist.
Vinayak

Antworten:

9

Der richtige Registrierungsschlüssel für die monitorunabhängige Skalierung ist HKCU:\Control Panel\Desktopder Wert LogPixels. Weitere Informationen zu allen DPI-bezogenen Registrierungseinstellungen finden Sie hier: http://technet.microsoft.com/en-us/library/dn528846.aspx#system Es gibt auch Informationen für den Fall, dass Sie für jede Anzeige eine andere Skalierung aktiviert haben .

Ich habe ein kleines PowerShell-Skript geschrieben, das die DPI-Skalierung für alle Anzeigen in Abhängigkeit von der aktuellen Skalierung ändert und die Benutzerabmeldung durchführt, sodass ich das Skript nur ausführen muss, wenn ich mein Gerät auf einen anderen Monitor stelle.

cd 'HKCU:\Control Panel\Desktop'
$val = Get-ItemProperty -Path . -Name "LogPixels"
if($val.LogPixels -ne 96)
{
    Write-Host 'Change to 100% / 96 dpi'
    Set-ItemProperty -Path . -Name LogPixels -Value 96
} else {
    Write-Host 'Change to 150% / 144 dpi'
    Set-ItemProperty -Path . -Name LogPixels -Value 144
}

logoff;exit

Ich denke, Sie können es mit den Informationen des TechNet-Artikels an Ihre Bedürfnisse anpassen.

Torben Schramme
quelle
3
Ich entschuldige mich dafür, nicht früher geantwortet zu haben. tolle lösung! Die Verwendung des LogPixelsWerts gilt jedoch leider nur, wenn das Kontrollkästchen "Eine Skalierungsstufe für alle meine Anzeigen auswählen" aktiviert ist. Dies habe ich beim eigentlichen Durchspielen der Registrierungswerte beobachtet, wird aber auch durch den verknüpften Technet-Artikel bestätigt. Außerdem hat Ihre Lösung die Einschränkung, dass Benutzer abgemeldet werden müssen. Die DPIs werden nicht aktualisiert, ohne dass sich der Benutzer ab- und wieder anmeldet. Zwischen diesen beiden Nachteilen funktioniert Ihre Lösung für mich nicht ganz, aber für eine gute Antwort +1.
FThompson
Es funktioniert nicht unter Windows 10 :(
Kokbira
3
@kokbira Damit dies in Windows 10 funktioniert, müssen Sie den Registrierungsschlüssel HKCU:\Control Panel\Desktop\Win8DpiScalingauf setzen 1. Andernfalls wird der Standardskalierungsfaktor verwendet und der Wert in ignoriert LogPixels.
FlyingFoX
1
Wenn die DPI-Skala für jeden Monitor anders ist, anstatt zu HKCU:\Control Panel\DesktopschauenHKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI
Shayan
1
Und auch hierHKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\ScaleFactors
Shayan
2

Es gibt ein PowerShell-Skript zum Ändern der Bildschirmauflösung, das möglicherweise Abhilfe schafft. Ich habe keine Ahnung, ob die Änderung unter Windows 8.1 sofort vorgenommen wird, aber mit etwas Glück verwendet dieses Skript möglicherweise dieselbe API wie das Applet der Systemsteuerung.

Das vollständige Set-ScreenResolution.ps1Skript befindet sich im Skript-Repository , ist jedoch zu lang, um hier reproduziert zu werden.

Die Beschreibung des Autors finden Sie im Artikel:
Hey, Scripting Guy! Wie kann ich die Auflösung meines Desktop-Monitors über Windows PowerShell ändern? .

Einige Informationen zur Verwendung finden Sie im Artikel:
Ändern der Bildschirmauflösung mit Powershell .

Harrymc
quelle
Diese Ressourcen sind eher darauf ausgerichtet, die Bildschirmauflösung als die DPI zu ändern. Ich habe mir die von Ihnen bereitgestellten Links angesehen, aber ich sehe nur Optionen zum Festlegen der Breite und Höhe und keine Erwähnung von DPI. Verstehe ich deine Antwort falsch?
FThompson
Durch Ändern der Auflösung wird die DPI geändert und umgekehrt. Sie können die Bildschirmauflösung unter verschiedenen DPI-Einstellungen ermitteln und dann mithilfe des obigen Skripts zu diesen Auflösungen wechseln.
Harrymc
1
Während die Änderung der Auflösung die DPI ändert, ist dies nicht ganz das Gleiche wie die in Win8 angebotene DPI-Skalierung (möglicherweise ist dies auf anderen Betriebssystemen anders?) Die Größe und das Erscheinungsbild der Symbole sind immer gleich. Wenn die Auflösung geändert wird, ändern sich die Größe des Desktops und der Symbole entsprechend.
FThompson
Dies liegt an der neuen DPI-fähigen Technologie, die in Windows 8.1 eingeführt wurde. Ich konnte keine Informationen zu seiner API finden. Derzeit sind nur Registrierungseinstellungen verfügbar, nach denen Sie nicht suchen.
Harrymc
Der Explorer ist DPI-fähig, sodass Desktopsymbole ihre Größe behalten, andere Programme jedoch nur sehr wenige. Bei den meisten Produkten ist das Ändern der Auflösung so gut wie das Ändern der DPI.
Harrymc