ダークモードが有効かどうかを確認する

今のところ状態を参照するAPIは用意されていない様なので、直接レジストリを参照する必要がある。

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize以下の値AppsUseLightThemeがそれ。

data mode
0 Dark Mode
1 White Mode

以下のコードは、AppsUseLightTheme0の時、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;
}