この記事について
この記事は、生成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で文字やボタンの大きさが変わる理由を理解する入口になります。
