.NETでWindowsで設定されてるテーマを判定したい!
概要
今回の記事では、.NETでWindowsで設定されてるテーマを判定する手順を掲載する。
「個人設定->色」の「モードを選ぶ」の項目をコードで取得したい!
仕様書
環境
- .NET 8
手順書
テーマの設定はレジストリSoftware\Microsoft\Windows\CurrentVersion\Themes\Personalize
の項目AppsUseLightTheme
の値で判定できる。
using Microsoft.Win32;
using System.Diagnostics;
using System.Runtime.Versioning;
public static class Theme
{
[SupportedOSPlatform("windows")]
public static bool IsDark()
{
const string registryKeyPath = @"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize";
const string valueName = "AppsUseLightTheme";
try
{
using (RegistryKey? key = Registry.CurrentUser.OpenSubKey(registryKeyPath))
{
if (key != null)
{
object? registryValue = key.GetValue(valueName);
if (registryValue is int intValue)
{
return intValue == 0;
}
}
}
}
catch (Exception ex)
{
Debug.WriteLine($"Error: {ex.Message}");
}
return false;
}
[SupportedOSPlatform("windows")]
public static bool IsLight()
{
return !IsDark();
}
}
レジストリの項目の値が0
だとダークテーマ。0
以外の場合はライトテーマと判定してる。
まとめ(感想文)
テーマの切り替えまでの処理を書くとアプリ開発のスタート地点経った気がする今日この頃。