Ridimensionamento DPI in Windows 8.1 tramite riga di comando


14

Vorrei creare una scorciatoia da tastiera per modificare rapidamente e facilmente la scala DPI sulla mia macchina, creando una piccola macro da eseguire al rilevamento della scorciatoia da tastiera.

In Windows 8.1, la scala DPI dello schermo del desktop può essere impostata tramite il pannello di controllo (nella foto sotto), con effetto immediato. In alternativa, la scala può essere impostata manualmente nel registro, ma per farlo è necessario che l'utente acceda e disconnetta o riavvii la macchina per rendere effettiva (e funziona solo per imitare l'opzione "un livello di scala per tutti i miei schermi") .

Come posso impostare la scala DPI tramite la riga di comando o altrimenti a livello di programmazione?

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


Hai provato a fare la modifica del registro, uccidendo il processo explorer, quindi riavviandolo. Perché questo è tutto il metodo GUI farebbe in teoria.
Ramhound,

@Ramhound Nessuna fortuna. L'interfaccia della GUI sta sicuramente facendo qualcosa per aggiornare il desktop al fine di applicare l'impostazione, ma non sono sicuro di cosa e non sono stato in grado di trovare nulla al riguardo.
FThompson,

Sei sicuro che le modifiche avvengano immediatamente? Viene visualizzata una finestra di dialogo che dice "Devi uscire dal tuo computer per applicare queste modifiche"
Vinayak,

@Vinayak, Le modifiche avvengono immediatamente quando applicate dalla finestra di dialogo sopra. Ricordo di aver letto che l'applicazione immediata è una novità di Windows 8.1 rispetto a Windows 8 standard, quindi se sei interessato a ricercare quella differenza tra la tua macchina e la mia, potrebbe essere un punto di partenza.
FThompson,

@Vulcan In realtà, sto usando Windows 8.1. Tuttavia, stavo cercando di apportare modifiche dopo aver fatto clic sulla Let me choose one scaling level...casella di controllo poiché il dispositivo di scorrimento sopra è disattivato sul mio taccuino.
Vinayak,

Risposte:


9

La chiave di registro corretta per il ridimensionamento indipendente del monitor è HKCU:\Control Panel\Desktopcon il valore LogPixels. Ulteriori informazioni su tutte le impostazioni del Registro di sistema relative a DPI sono disponibili qui: http://technet.microsoft.com/en-us/library/dn528846.aspx#system Ci sono anche informazioni sul caso in cui è stato abilitato il ridimensionamento diverso per ciascun display .

Ho scritto un piccolo script PowerShell che modifica il ridimensionamento DPI per tutti i display in base al ridimensionamento corrente ed esegue la disconnessione dell'utente, quindi devo solo eseguire lo script quando metto il mio dispositivo su un monitor diverso.

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

Penso che tu possa modificarlo per le tue esigenze con le informazioni dell'articolo TechNet.


3
Mi scuso per non aver risposto prima; ottima soluzione! Sfortunatamente, tuttavia, l'utilizzo del LogPixelsvalore si applica solo quando la casella di controllo "Fammi scegliere un livello di ridimensionamento per tutti i miei display" è selezionata, qualcosa che avevo osservato quando ho fatto confusione con i valori del registro, ma è anche confermato dall'articolo Technet collegato. Inoltre, la tua soluzione ha la necessità di richiedere il logout dell'utente; i DPI non vengono aggiornati senza che l'utente si sia disconnesso e riconnesso. Tra questi due inconvenienti, la tua soluzione non funziona abbastanza per me, ma +1 lo stesso per un'ottima risposta.
FThompson

Non funziona su Windows 10 :(
kokbira

3
@kokbira Affinché funzioni in Windows 10, è necessario impostare la chiave di registro HKCU:\Control Panel\Desktop\Win8DpiScalingsu 1. Altrimenti utilizzerà il fattore di ridimensionamento predefinito e ignorerà il valore in LogPixels.
FlyingFoX,

1
Se la scala DPI è diversa per ogni monitor, invece di HKCU:\Control Panel\DesktopguardareHKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI
Shayan

1
E anche quiHKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\ScaleFactors
Shayan

2

C'è uno script di PowerShell per modificare la risoluzione dello schermo che potrebbe aiutare. Non ho idea se la modifica apportata sia immediata su Windows 8.1, ma con un po 'di fortuna questo script potrebbe utilizzare la stessa API utilizzata dall'applet del Pannello di controllo.

Lo Set-ScreenResolution.ps1script completo è disponibile nel repository degli script , ma è troppo lungo per essere riprodotto qui.

La descrizione dell'autore si trova nell'articolo:
Hey, Scripting Guy! Come posso modificare la risoluzione del mio monitor desktop tramite Windows PowerShell? .

Alcune informazioni sull'uso sono disponibili nell'articolo:
Modifica della risoluzione dello schermo con Powershell .


Queste risorse sembrano più orientate al cambiamento della risoluzione dello schermo piuttosto che al DPI. Ho guardato i collegamenti che hai fornito, ma vedo solo le opzioni per impostare la larghezza e l'altezza e nessuna menzione di DPI. Sto fraintendendo la tua risposta?
FThompson,

La modifica della risoluzione modificherà il DPI e viceversa. È possibile scoprire la risoluzione dello schermo in diverse impostazioni DPI, quindi passare a queste risoluzioni utilizzando lo script sopra.
harrymc,

1
Mentre cambiando la risoluzione si modifica il DPI, non è esattamente la stessa cosa del ridimensionamento DPI offerto in Win8 (forse è diverso su altri sistemi operativi?) Un esempio di ciò è che, indipendentemente da ciò che il ridimensionamento DPI è impostato, il desktop e le sue icone sono sempre le stesse per dimensioni e aspetto, mentre se si modifica la risoluzione, il desktop e le sue icone cambiano di conseguenza.
FThompson,

Ciò è dovuto alla nuova tecnologia compatibile con DPI introdotta in Windows 8.1. Non sono stato in grado di trovare alcuna informazione sulla sua API: al momento sono disponibili solo le impostazioni del registro, che non è ciò che stai cercando.
harrymc,

Explorer è compatibile con DPI, quindi le icone del desktop mantengono le loro dimensioni, ma pochi altri programmi lo sono. Per la maggior parte dei prodotti, modificare la risoluzione equivale a modificare il DPI.
harrymc,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.