ダークモードが有効かどうかを確認する
今のところ状態を参照する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;
}