ダークモードが有効かどうかを確認する
今のところ状態を参照するAPIは用意されていない様なので、直接レジストリを参照する必要がある。
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize
以下の値AppsUseLightTheme
がそれ。
data | mode |
---|---|
0 | Dark Mode |
1 | White Mode |
以下のコードは、AppsUseLightTheme
が0
の時、true
を返す。Anniversary Update(バージョン1607 ビルド14393)以前にこのキーは無いと思う(未確認)ので、キーが見つからない場合はfalse
を返す。
bool IsDarkMode()
{
auto result = bool( false );
auto key = HKEY();
auto hr = HRESULT_FROM_WIN32( RegOpenKeyEx( HKEY_CURRENT_USER, LR"(SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize)", 0, KEY_QUERY_VALUE, &key ) );
if( SUCCEEDED( hr ) )
{
auto type = DWORD();
auto value = DWORD();
auto value_size = DWORD( sizeof( value ) );
hr = HRESULT_FROM_WIN32( RegQueryValueEx( key, L"AppsUseLightTheme", nullptr, &type, (LPBYTE )& value, &value_size ) );
if( SUCCEEDED( hr ) && type == REG_DWORD && value_size == sizeof( value ) )
result = !value;
RegCloseKey( key );
}
return result;
}