Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用GetMonitorCapabilities和GetMonitorBrightness函数_C++_Windows_Winapi - Fatal编程技术网

C++ 如何使用GetMonitorCapabilities和GetMonitorBrightness函数

C++ 如何使用GetMonitorCapabilities和GetMonitorBrightness函数,c++,windows,winapi,C++,Windows,Winapi,我正试图通过编程方式调整显示器的亮度。经过一点研究,我想到了这个,并编写了以下代码(主要是从其他链接中复制粘贴) 根据文档,该功能可能不受支持 如果支持此函数,则GetMonitorCapabilities函数 返回MC_CAPS_亮度标志 因此,为了检查这一点,我在调用GetMonitorBrightness之前,在代码中添加了以下块 LPDWORD pdwMonitorCapabilities = NULL; LPDWORD pdwSupportedColorTemperatures = N

我正试图通过编程方式调整显示器的亮度。经过一点研究,我想到了这个,并编写了以下代码(主要是从其他链接中复制粘贴)

根据文档,该功能可能不受支持

如果支持此函数,则GetMonitorCapabilities函数 返回MC_CAPS_亮度标志

因此,为了检查这一点,我在调用
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>和 GeTimeRoCababiListes()/Cyto>的调用是错误的。您正在传递空指针,但它们期望指向实际
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);