コマンドラインからWindowsのcurrent画面解像度を取得しようとしています。
私が見つけたほとんどの回答に基づいて、私は以下を使用する必要があります:
wmic desktopmonitor get screenheight, screenweight
しかし、これは表示デバイスのmaxでサポートされている解像度を返し、現在の解像度ではないが必要です。
例:
4kモニターを使用していますが、現在は1920x1080
でのみ表示するように設定されています。上記のコマンドを実行すると、次のようになります。
ScreenHeight ScreenWidth
2160 3840
コマンドラインからWindowsの現在の画面解像度を取得するにはどうすればよいですか?
アプリケーションが高いDPI認識を宣言しない限り、ほとんどのWindows API関数は互換性のために解像度のスケーリングされたバージョンを返すため、高いDPIを処理することはこれをやや困難にしました。インスピレーション このスタックオーバーフローの回答 私はこのPowerShellスクリプトを書きました:
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class PInvoke {
[DllImport("user32.dll")] public static extern IntPtr GetDC(IntPtr hwnd);
[DllImport("gdi32.dll")] public static extern int GetDeviceCaps(IntPtr hdc, int nIndex);
}
"@
$hdc = [PInvoke]::GetDC([IntPtr]::Zero)
[PInvoke]::GetDeviceCaps($hdc, 118) # width
[PInvoke]::GetDeviceCaps($hdc, 117) # height
最初に水平解像度、次に垂直解像度の2行を出力します。
実行するには、ファイルに保存します(例:screenres.ps1
)PowerShellで起動します。
powershell -ExecutionPolicy Bypass .\screenres.ps1