C++ 如何使用GetMonitorCapabilities和GetMonitorBrightness函数
我正试图通过编程方式调整显示器的亮度。经过一点研究,我想到了这个,并编写了以下代码(主要是从其他链接中复制粘贴) 根据文档,该功能可能不受支持 如果支持此函数,则GetMonitorCapabilities函数 返回MC_CAPS_亮度标志 因此,为了检查这一点,我在调用C++ 如何使用GetMonitorCapabilities和GetMonitorBrightness函数,c++,windows,winapi,C++,Windows,Winapi,我正试图通过编程方式调整显示器的亮度。经过一点研究,我想到了这个,并编写了以下代码(主要是从其他链接中复制粘贴) 根据文档,该功能可能不受支持 如果支持此函数,则GetMonitorCapabilities函数 返回MC_CAPS_亮度标志 因此,为了检查这一点,我在调用GetMonitorBrightness之前,在代码中添加了以下块 LPDWORD pdwMonitorCapabilities = NULL; LPDWORD pdwSupportedColorTemperatures = N
GetMonitorBrightness
之前,在代码中添加了以下块
LPDWORD pdwMonitorCapabilities = NULL;
LPDWORD pdwSupportedColorTemperatures = NULL;
bSuccess = GetMonitorCapabilities(hPhysicalMonitor, pdwMonitorCapabilities, pdwSupportedColorTemperatures);
if (bSuccess == FALSE)
{
ShowError(TEXT("GetMonitorCapabilities"));
}
不幸的是,在添加该块后,我收到了以下错误:
同样,根据,GetMonitorCapabilities
函数在监视器不支持时失败
然后我检查了我的监视器是否支持DDC/CI,并发现它支持DDC/CI。此外,当我从监视器设置中手动禁用DDC/CI支持时,前面的错误消息会切换到下面的错误消息,因此现在我非常确定我的监视器支持DDC/CI
我觉得我做的每件事都是正确的,但显然我不是。简而言之,GetMonitorCapabilities
函数失败,并显示一条错误消息,我无法给出任何含义,GetMonitorBrightness
函数崩溃
注意事项:
我的班长是
我在64位Windows7上
我使用微软Visual C++编译器12(x86)您对<代码> GeTimeRoBrimeNeSe()/Cuff>和
DWORD
变量的指针:
DWORD dwMinimumBrightness = 0;
DWORD dwCurrentBrightness = 0;
DWORD dwMaximumBrightness = 0;
bSuccess = GetMonitorBrightness(hPhysicalMonitor, &dwMinimumBrightness, &dwCurrentBrightness, &dwMaximumBrightness);
哇,新手犯了个错误。谢谢文档中说的是
LPDWORD
,这让我感到困惑。它现在工作得很好。文档中还说它们是\u Out\u
参数,所以它们必须将输出写入某些东西。不允许使用空值,除非它们是\u Out\u Opt\u
。看,是的,我的错。正如我所说,新手犯了错误。所以问题是,我将变量定义为LPDWORD
,但显然我应该将它们定义为DWORD
,并通过&
发送其地址,使它们成为LPDWORD
。
LPDWORD pdwMonitorCapabilities = NULL;
LPDWORD pdwSupportedColorTemperatures = NULL;
bSuccess = GetMonitorCapabilities(hPhysicalMonitor, pdwMonitorCapabilities, pdwSupportedColorTemperatures);
if (bSuccess == FALSE)
{
ShowError(TEXT("GetMonitorCapabilities"));
}
DWORD dwMinimumBrightness = 0;
DWORD dwCurrentBrightness = 0;
DWORD dwMaximumBrightness = 0;
bSuccess = GetMonitorBrightness(hPhysicalMonitor, &dwMinimumBrightness, &dwCurrentBrightness, &dwMaximumBrightness);
DWORD dwMonitorCapabilities = 0;
DWORD dwSupportedColorTemperatures = 0;
bSuccess = GetMonitorCapabilities(hPhysicalMonitor, &dwMonitorCapabilities, &dwSupportedColorTemperatures);