Как определить, включена ли тема 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
для получения информации о том, какие другие флаги доступны.
Мы можем использовать класс AccessibilitySettings для получения высокой контрастности информации. И используйте AccessibilitySettings.HighContrast, чтобы указать, включена ли функция высокой контрастности системы.
Например:
Windows::UI::ViewManagement::AccessibilitySettings^ accessibilitySettings = ref new Windows::UI::ViewManagement::AccessibilitySettings;
Boolean ishighcontrast = accessibilitySettings->HighContrast;