コマンドラインを介したWindows 8.1のDPIスケーリング


14

キーボードショートカットを検出して実行する小さなマクロを作成することにより、マシンのDPIスケールをすばやく簡単に変更するためのキーボードショートカットを作成したいと思います。

Windows 8.1では、デスクトップディスプレイのDPIスケールはコントロールパネル(下図)で設定でき、すぐに有効になります。あるいは、レジストリでスケールを手動で設定することもできますが、これを行うには、ユーザーがサインインおよびログアウトするか、マシンを再起動して有効にする必要があります。

コマンドラインを使用して、またはプログラムでDPIスケールを設定するにはどうすればよいですか?

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


レジストリを変更して、エクスプローラープロセスを強制終了してから、再起動してみましたか。それはすべてのGUIメソッドが理論的にはそうするからです。
ラムハウンド

@Ramhound運はありません。GUIインターフェースは間違いなく設定を適用するためにデスクトップを更新するための処理を行っていますが、それについて何がわからず、何も見つけられませんでした。
FThompson

変更はすぐに反映されますか?私は、「あなたはこれらの変更を適用するためにコンピュータのサインアウトしなければならない」と言ってダイアログを取得
ビニャーヤク

@Vinayak、変更は上記のダイアログで適用されるとすぐに行われます。即時アプリケーションは、標準のWindows 8よりもWindows 8.1の新機能であり、マシンとマシンの違いを調査することに興味がある場合は、ここから始めてください。
FThompson

@Vulcan実際、私はWindows 8.1を使用しています。ただし、Let me choose one scaling level...チェックボックスをクリックした後に変更しようとしていました。上のスライダーがノートブックでグレー表示されています。
ビナヤック14

回答:


9

モニターに依存しないスケーリングの正しいレジストリキーはHKCU:\Control Panel\Desktop、値にありますLogPixels。すべてのDPI関連のレジストリ設定の詳細については、http//technet.microsoft.com/en-us/library/dn528846.aspx#systemを参照してください。ディスプレイごとに異なるスケーリングを有効にした場合の情報もあります。 。

現在のスケーリングに応じてすべてのディスプレイのDPIスケーリングを変更し、ユーザーのログオフを実行する小さなPowerShellスクリプトを作成したため、デバイスを別のモニターに配置するときにスクリプトを実行するだけです。

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

TechNet記事の情報を使用して、ニーズに合わせて変更できると思います。


3
すぐに反応しなかったことをおaびします。素晴らしい解決策!ただし、残念なことに、このLogPixels値の使用は、「すべてのディスプレイに1つのスケーリングレベルを選択する」チェックボックスがオンになっている場合にのみ適用されます。また、ソリューションにはユーザーのログアウトが必要という警告があります。ユーザーがログアウトして再度ログインしない限り、DPIは更新されません。これらの2つの欠点の間で、あなたのソリューションは私にはまったく機能しませんが、素晴らしい答えを得るには同じように+1します。
FThompson

Windows 10では動作しません:(
kokbira

3
@kokbiraこれをWindows 10で機能させるには、レジストリキーHKCU:\Control Panel\Desktop\Win8DpiScalingをに設定する必要があります1。そうでない場合、デフォルトのスケーリング係数を使用し、の値を無視しますLogPixels
FlyingFoX

1
DPIスケールの代わりに、各モニターに対して異なる場合HKCU:\Control Panel\Desktop表情HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI
Shayan

1
そしてまたここにHKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\ScaleFactors
Shayan

2

画面解像度を変更するPowerShellスクリプトがあります。Windows 8.1で変更がすぐに反映されるかどうかはわかりませんが、運が良ければ、このスクリプトはコントロールパネルアプレットで使用されるものと同じAPIを使用する可能性があります。

完全なSet-ScreenResolution.ps1スクリプトはScript Repositoryで入手できますが、ここで再現するには長すぎます。

著者によるその説明は、
Hey、Scripting Guy!の記事にありますWindows PowerShellを使用してデスクトップモニターの解像度を変更する方法はありますか?

それを使用するためのいくつかの情報は記事で見つけることができます:
Powershellで画面解像度を変更する


これらのリソースは、DPIよりも画面解像度の変更を重視しています。あなたが提供したリンクを見ましたが、幅と高さを設定するオプションしか見ていません。DPIについては言及していません。あなたの答えを誤解していますか?
FThompson

解像度を変更すると、DPIとその逆も変更されます。さまざまなDPI設定で画面解像度を確認し、上記のスクリプトを使用してこれらの解像度に変更できます。
ハリーマック14

1
解像度を変更するとDPIが変更されますが、Win8で提供されるDPIスケーリングとはまったく同じではありません(他のオペレーティングシステムでは異なる場合があります)。この例は、DPIスケーリングの設定に関係なく、デスクトップアイコンのサイズと外観は常に同じですが、解像度を変更すると、それに応じてデスクトップとアイコンのサイズが変更されます。
FThompson

これは、Windows 8.1で導入された新しいDPI対応テクノロジーが原因です。そのAPIに関する情報を見つけることができませんでした-現在利用できるのはレジストリ設定のみです。これは探しているものではありません。
ハリーマック14

ExplorerはDPI対応であるため、デスクトップアイコンはサイズを維持しますが、他のプログラムはほとんどありません。ほとんどの製品では、解像度を変更することはDPIを変更することと同じくらい良好です。
harrymc
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.