Mise à l'échelle DPI dans Windows 8.1 via la ligne de commande

14

Je voudrais créer un raccourci clavier pour changer rapidement et facilement l'échelle DPI sur ma machine, en créant une petite macro à exécuter lors de la détection du raccourci clavier.

Dans Windows 8.1, l'échelle DPI de l'affichage du bureau peut être définie via le panneau de commande (illustré ci-dessous), prenant effet immédiatement. Alternativement, l'échelle peut être définie manuellement dans le registre, mais cela nécessite que l'utilisateur se connecte et se déconnecte ou redémarre la machine pour prendre effet (et ne fonctionne que pour imiter l'option "un niveau de mise à l'échelle pour tous mes affichages") .

Comment puis-je définir l'échelle DPI via la ligne de commande ou autrement par programme?

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

FThompson
la source
Avez-vous essayé de modifier le registre, de tuer le processus de l'explorateur, puis de le redémarrer. Parce que c'est tout ce que la méthode GUI ferait en théorie.
Ramhound
@Ramhound Pas de chance. L'interface graphique fait définitivement quelque chose pour rafraîchir le bureau afin d'appliquer le paramètre, mais je ne sais pas quoi et je n'ai rien trouvé à ce sujet.
FThompson
Êtes-vous sûr que les changements ont lieu immédiatement? Je reçois une boîte de dialogue disant "Vous devez vous déconnecter de votre ordinateur pour appliquer ces modifications"
Vinayak
@Vinayak, Les modifications ont lieu immédiatement lorsqu'elles sont appliquées par la boîte de dialogue ci-dessus. Je me souviens avoir lu que l'application immédiate est nouvelle pour Windows 8.1 par rapport à Windows 8 standard, donc si cela vous intéresse de rechercher cette différence entre votre machine et la mienne, cela pourrait être un point de départ.
FThompson
@Vulcan En fait, j'utilise Windows 8.1. Cependant, j'essayais d'apporter des modifications après avoir cliqué sur la Let me choose one scaling level...case à cocher car le curseur au-dessus est grisé sur mon bloc-notes.
Vinayak

Réponses:

9

La clé de registre correcte pour la mise HKCU:\Control Panel\Desktopà l' échelle indépendante du moniteur est avec la valeur LogPixels. Vous trouverez plus d'informations sur tous les paramètres de registre liés à DPI ici: http://technet.microsoft.com/en-us/library/dn528846.aspx#system Il existe également des informations sur le cas où vous avez activé une mise à l'échelle différente pour chaque affichage .

J'ai écrit un petit script PowerShell qui modifie la mise à l'échelle DPI pour tous les écrans en fonction de la mise à l'échelle actuelle et effectue la déconnexion de l'utilisateur, je n'ai donc qu'à exécuter le script lorsque je place mon appareil sur un autre moniteur.

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

Je pense que vous pouvez le modifier selon vos besoins avec les informations de l'article TechNet.

Torben Schramme
la source
3
Mes excuses pour ne pas avoir répondu plus tôt; bonne solution! Malheureusement, l'utilisation de la LogPixelsvaleur ne s'applique que lorsque la case à cocher "Permettez-moi de choisir un niveau de mise à l'échelle pour tous mes affichages" est cochée, ce que j'avais observé en jouant avec les valeurs de registre moi-même, mais cela est également confirmé par l'article Technet lié. En outre, votre solution présente la mise en garde de la nécessité de se déconnecter des utilisateurs; les DPI ne sont pas mis à jour sans que l'utilisateur se déconnecte et se reconnecte. Entre ces deux inconvénients, votre solution ne fonctionne pas tout à fait pour moi, mais +1 tout de même pour une bonne réponse.
FThompson
Cela ne fonctionne pas sur Windows 10 :(
kokbira
3
@kokbira Pour que cela fonctionne dans Windows 10, vous devez définir la clé de registre HKCU:\Control Panel\Desktop\Win8DpiScalingsur 1. Sinon, il utilisera le facteur d'échelle par défaut et ignorera la valeur de LogPixels.
FlyingFoX
1
Si l'échelle DPI est différente pour chaque moniteur, au lieu de HKCU:\Control Panel\DesktopregarderHKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI
Shayan
1
Et aussi iciHKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\ScaleFactors
Shayan
2

Il existe un script PowerShell pour changer la résolution d'écran qui pourrait aider. Je ne sais pas si le changement qu'il fait est immédiat sur Windows 8.1, mais avec un peu de chance, ce script pourrait utiliser la même API que celle utilisée par l'applet du Panneau de configuration.

Le complet Set-ScreenResolution.ps1 script est disponible dans le référentiel de scripts , mais il est trop long pour être reproduit ici.

Sa description par l'auteur se trouve dans l'article:
Hey, Scripting Guy! Comment puis-je modifier la résolution de mon moniteur de bureau via Windows PowerShell? .

Vous trouverez des informations sur son utilisation dans l'article:
Modification de la résolution d'écran avec Powershell .

harrymc
la source
Ces ressources semblent plus orientées vers la modification de la résolution d'écran plutôt que vers le DPI. J'ai regardé les liens que vous avez fournis, mais je ne vois que des options pour définir la largeur et la hauteur, et aucune mention de DPI. Suis-je en train de mal comprendre votre réponse?
FThompson
Changer la résolution changera le DPI et vice versa. Vous pouvez trouver la résolution d'écran sous différents paramètres DPI, puis modifier ces résolutions à l'aide du script ci-dessus.
harrymc
1
Bien que la modification de la résolution modifie le DPI, ce n'est pas tout à fait la même chose que la mise à l'échelle DPI offerte dans Win8 (peut-être est-ce différent sur d'autres systèmes d'exploitation?) et ses icônes sont toujours les mêmes en taille et en apparence, tandis que si la résolution est modifiée, le bureau et ses icônes changent de taille en conséquence.
FThompson
Cela est dû à la nouvelle technologie compatible DPI introduite dans Windows 8.1. Je n'ai pas pu trouver d'informations sur son API - seuls les paramètres de registre sont actuellement disponibles, ce qui n'est pas ce que vous recherchez.
harrymc
Explorer est compatible DPI, les icônes du bureau conservent leur taille, mais très peu d'autres programmes le sont. Pour la plupart des produits, changer la résolution revient à changer le DPI.
harrymc