Освоение обнаружения темного режима в Windows: подробное руководство

Темный режим становится все более популярным среди пользователей, обеспечивая элегантный и визуально привлекательный внешний вид приложений и операционных систем. Windows, будучи одной из наиболее широко используемых операционных систем, предлагает темный режим в качестве общесистемной функции. В этой статье блога мы рассмотрим различные методы обнаружения темного режима системы в Windows на примерах кода. Являетесь ли вы разработчиком, желающим реализовать поддержку Dark Mode в своем приложении, или просто интересуетесь техническими аспектами, это руководство предоставит вам необходимые знания.

Метод 1: настройки реестра
Windows хранит различные параметры конфигурации в реестре Windows, включая настройки темного режима. Вы можете получить доступ к этим настройкам программно, чтобы определить, включен ли темный режим. Вот фрагмент кода на C#:

using Microsoft.Win32;
public static bool IsDarkModeEnabled()
{
    RegistryKey registryKey = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize");
    int value = (int)registryKey.GetValue("AppsUseLightTheme");
    return value == 0;
}

Метод 2: функция SystemParametersInfo
Другой подход предполагает использование функции SystemParametersInfoиз Windows API, которая позволяет получать общесистемные настройки. Вот пример на C++:

#include <Windows.h>
bool IsDarkModeEnabled()
{
    BOOL isDarkMode = FALSE;
    SystemParametersInfo(SPI_GETDARKMODE, 0, &isDarkMode, 0);
    return isDarkMode;
}

Метод 3: UWP API
Если вы разрабатываете приложение универсальной платформы Windows (UWP), вы можете использовать класс UISettingsдля определения цветового режима системы. Вот пример на C#:

using Windows.UI.ViewManagement;
public static bool IsDarkModeEnabled()
{
    UISettings uiSettings = new UISettings();
    return uiSettings.GetColorValue(UIColorType.Background) == Colors.Black;
}

Метод 4. Библиотека пользовательского интерфейса Windows (WinUI)
Для разработчиков, использующих библиотеку пользовательского интерфейса Windows (WinUI), существует удобный класс ThemeListener, который упрощает обнаружение темного режима. Вот пример на C#:

using Microsoft.UI.Xaml;
public static bool IsDarkModeEnabled()
{
    return ThemeListener.RequestedTheme == ApplicationTheme.Dark;
}

В этой статье мы рассмотрели различные методы обнаружения темного режима в операционной системе Windows. Независимо от того, предпочитаете ли вы получать доступ к настройкам реестра, использовать функции Windows API, использовать UWP API или использовать WinUI, теперь у вас есть ряд возможностей для программного обнаружения темного режима. Внедрив обнаружение темного режима в своих приложениях, вы можете улучшить взаимодействие с пользователем и обеспечить визуально целостный интерфейс. Будьте в курсе последних тенденций и включите поддержку темного режима, чтобы ваши приложения оставались на шаг впереди.