web-dev-qa-db-ja.com

Win32アプリケーションでWindows 10のライト/ダークモードを検出する方法

少しのコンテキスト: Sciter (純粋なwin32アプリケーション)は、すでにUWPをUIと同様にレンダリングできます。

ダークモードの場合: in dark mode

ライトモードの場合: in light mode

Windows 10.1803では、設定アプレット にDark/Lightスイッチが導入されています(例: )。

質問:Win32アプリケーションでその「アプリモード」の現在のタイプを判断するにはどうすればよいですか?

18
c-smile

さて、このオプションは通常のwin32アプリケーションに直接公開されていないようですが、HKCUHKLM\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize\AppsUseLightThemeレジストリキーを使用して設定/取得できます。

17
VTT

編集:これは、c ++ 17を有効にしてビルドしている限り、すべてのWin32プロジェクトで機能することを示しています。

最新のSDKを使用している場合、これはうまくいきました。

#include <winrt/Windows.UI.ViewManagement.h>

using namespace winrt::Windows::UI::ViewManagement;

if (RUNNING_ON_WINDOWS_10) {
  UISettings settings;
  auto background = settings.GetColorValue(UIColorType::Background);
  auto foreground = settings.GetColorValue(UIColorType::Foreground);
}
2
jarjar