如何在我的应用程序中更改“调暗显示”和“调暗显示亮度”设置 (Windows)?

Posted

技术标签:

【中文标题】如何在我的应用程序中更改“调暗显示”和“调暗显示亮度”设置 (Windows)?【英文标题】:How can I change the "Dim the display" and "Dimming display brightness" setting (Windows) from wihin my application? 【发布时间】:2018-03-11 16:16:18 【问题描述】:

我的应用程序已经能够设置显示器关闭时的超时时间,以及设置全部,以及设置当前亮度。 Windows 有一个附加功能,可以在一段时间后使显示变暗(高级电源方案设置中的“使显示变暗”和“显示变暗亮度”)。

有人知道我如何在我的应用程序(它是一个 C/C++ 应用程序)中查询/设置选项“之后显示暗淡”和“显示调暗亮度”设置 - 如果可能的话,使用“纯”Windows API?

之前非常感谢。 您的 Willi K。

【问题讨论】:

请注意:请不要提出诸如“调用'powercfg ...'”之类的建议——从我的角度来看,调用另一个程序来做某事并不是解决问题的正确方法。 探索电源管理接口而不是SetMonitorBrightness函数。 我不使用 SetMonitorBrightness() 函数。您能否提供有关“电源管理界面”的更多详细信息,尤其是我正在寻找的选项? Here you go. 非常感谢,罗恩。这为我指明了正确的方向。我刚刚还找到了this SO article,这似乎描述了我正在寻找的东西。如果我得到了解决方案,我会留下一个代码示例。 【参考方案1】:

Ron 为我指明了正确的方向。以下代码示例展示了应用程序如何控制背光何时应调暗到特定亮度级别(为了使代码更易于理解,已省略错误检查等)。

#include <iniitguid.h>    // Seems to be uncluded before Windows.h for some reason...
#include <windows.h>
#include <powrprof.h>

static const GUID GuidPwrVideoIf = GUID_VIDEO_SUBGROUP;
static const GUID GuidPwrDimTimeout = GUID_VIDEO_DIM_TIMEOUT;
static const GUID GuidPwrDimBrightness = GUID_DEVICE_POWER_POLICY_VIDEO_DIM_BRIGHTNESS;

void setBacklightDimming(DWORD timeOut, DWORD dimmedBrightness)

    DWORD ret;
    GUID *pGuidPwrActiveSheme;    

    // Attach to the active power scheme
    ret = PowerGetActiveScheme(NULL, &pGuidPwrActiveSheme);

    // Set the timeout that will elapse before the display will dim
    ret = PowerWriteDCValueIndex(NULL, pGuidPwrActiveSheme, &GuidPwrVideoIf, &GuidPwrDimTimeout, timeOut);

    // Set the dimmed brightness level
    PowerWriteDCValueIndex(NULL, pGuidPwrActiveSheme, &GuidPwrVideoIf, &GuidPwrDimBrightness, dimmedBrightness);

    // Apply the new setings immediately
    retVal = PowerSetActiveScheme(NULL, pGuidPwrActiveSheme);

    // Go on with whatever you want to do...

此代码示例会在系统“使用电池”(例如笔记本电脑)时更改设置。要在系统“使用交流电源”时进行设置,只需将 PowerWriteDCValueIndex() 替换为 PowerWriteACValueIndex()。

【讨论】:

以上是关于如何在我的应用程序中更改“调暗显示”和“调暗显示亮度”设置 (Windows)?的主要内容,如果未能解决你的问题,请参考以下文章

发布我的应用程序后,如何在我的 google play 控制台上更改应用程序内容描述?

如何在 Xamarin.android 中更改条目光标颜色

如何在我的 android 应用程序中仅启用英文键盘?

如何在我的应用程序的javafx 2.0中更改阶段标题栏上的图标[重复]

GCM 服务器在哪个时间频率刷新注册 ID 以及如何在我的手机中获取 regId 更改事件?

获得批准后,我可以在我的应用中更改捆绑标识符吗?