Как определить, включена ли тема High Contrast в Windows 10?

В Windows 10 высококонтрастная тема является единственной темой, которая ведет себя не так, как стандартная тема Windows 10 в отношении границ.

Я хочу определить, есть ли у пользователя тема High Contrast в Windows 10 для этой цели.

2

Решение

Чтобы определить, находится ли система в данный момент в режиме высокой контрастности, нужно использовать SystemParametersInfo чтобы получить HIGHCONTRAST структура, которая имеет всю необходимую информацию.

Простой пример:

HIGHCONTRAST info = { 0 };
info.cbSize = sizeof(HIGHCONTRAST);
BOOL ok = SystemParametersInfoW(SPI_GETHIGHCONTRAST, 0, &info, 0);

if (ok)
{
if (info.dwFlags & HCF_HIGHCONTRASTON)
{
wcout << L"High Contrast On" << endl;
}
else
{
wcout << L"High Contrast Off" << endl;
}
}

Смотрите документацию для HIGHCONTRAST для получения информации о том, какие другие флаги доступны.

2

Другие решения

Мы можем использовать AccessibilitySettings класс, чтобы получить информацию высокой контрастности. И использовать AccessibilitySettings.HighContrast чтобы указать, включена ли функция высокой контрастности системы.

Например:

Windows::UI::ViewManagement::AccessibilitySettings^ accessibilitySettings = ref new Windows::UI::ViewManagement::AccessibilitySettings;
Boolean ishighcontrast = accessibilitySettings->HighContrast;
1

По вопросам рекламы [email protected]