如何确定Windows 10中是否启用了高对比度主题?

时间:2016-06-21 20:38:34

标签: c++ windows windows-10 dwm windows-themes

在Windows 10中,高对比度主题是唯一与边框相关的行为与默认Windows 10主题不同的主题。

我想检测用户是否在Windows 10中处于高对比度主题中。

2 个答案:

答案 0 :(得分: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的文档。

答案 1 :(得分:1)

我们可以使用AccessibilitySettings类来获得高对比度的信息。并使用AccessibilitySettings.HighContrast指示系统高对比度功能是打开还是关闭。

例如:

if(!flag){
 // call your functions
}