PowerShellからWin32 GetDpiForSystemを呼ぶ ― WindowsのDPI値を見る

PowerShellカテゴリを表すパンダのイラスト PowerShell

この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。Microsoft LearnのGetDpiForSystemを確認し、PowerShellからWin32 APIを呼んでWindowsのDPI値を観察する最小TRYに整理しました。

検証ステータス:📘 Microsoft公式仕様確認済み・Windows実機未確認

今回のTRY成功条件は、GetDpiForSystemをPowerShellから呼び、0以外のDPI値を表示できることです。

Smoke Test

Add-Type @'
using System.Runtime.InteropServices;
public static class DpiApi {
  [DllImport("user32.dll")]
  public static extern uint GetDpiForSystem();
}
'@
$dpi = [DpiApi]::GetDpiForSystem()
if ($dpi -eq 0) { throw '[FAILED] DPI = 0' }
"[SUCCESS] SystemDpi = $dpi"

Observe

96、120、144など、環境に応じた値が表示されるかを見ます。APIが呼べたかを「エラーがない」ではなく戻り値で判定します。

なぜ?

WindowsのUIサイズは物理pixelだけで決まりません。DPIとscalingが関係するため、GUIを作るときは固定pixelだけで考えると環境差が出ます。

1か所変える

Windowsの表示スケールを変更するのではなく、まず別PCや別設定環境で値を比較してください。設定変更を伴う場合は作業前の値を記録します。

Failure / Boundary

DPI awarenessの状態によってAPIの意味や推奨APIが変わります。per-monitor DPIが必要なアプリではGetDpiForWindowなど別APIも検討します。

仕事で使うなら

PowerShell + WPFで社内ツールを作る際、別PCで文字やボタンの大きさが変わる理由を理解する入口になります。

公式情報・一次情報

文書情報

記事タイトル
PowerShellからWin32 GetDpiForSystemを呼ぶ ― WindowsのDPI値を見る
作成日
更新日
Source URL
https://papanda925.com/?p=15933

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました