【发布时间】:2014-03-04 15:03:37
【问题描述】:
我正在开发一个 Windows 8 应用程序。有没有办法可以访问设备的亮度设置,以便用户可以从应用程序内部调整设备的亮度?谢谢
【问题讨论】:
-
欢迎来到 Stack Overflow。到目前为止,您尝试过任何东西吗?请阅读FAQ、How to Ask 和help center 作为开始..
标签: c# windows-8 brightness
我正在开发一个 Windows 8 应用程序。有没有办法可以访问设备的亮度设置,以便用户可以从应用程序内部调整设备的亮度?谢谢
【问题讨论】:
标签: c# windows-8 brightness
我正在使用批处理文件来更改内容,但看起来 Windows 也提供了一个 API,您可以直接从 C# (以及 p/Invoke 然后调用)......所以以上所有内容仍然正确,并且仍然工作,但你也可以打电话
这些链接也很好,因为它们为您列出了所有子指南。所以只需 P/Invoke 那些坏男孩并直接从您的应用程序中调用它们,不需要批处理文件:)
【讨论】:
内置的windows UtilityPowerCfg可以动态改变亮度...
PowerCfg 通常从 cmd 行或批处理文件中调用,但您也可以使用 Process.Start 从您的应用程序中调用它。
在使用 PowerCfg 时,您需要了解以下几点:
Scheme guid 实际上是最难获得的,因为用户可能已经定义了新的 scheme,因此需要通过调用 PowerCfg -getactivescheme 来找到该 guid
其他的guid都是常量,可以通过运行PowerCfg - query找到
将所有指南排好后,您可以为每个设置设置交流(插入电源)和直流(使用电池)值。与:
POWERCFG -SETACVALUEINDEX <SCHEME_GUID> <SUB_GUID> <SETTING_GUID> <SettingIndex>
and
POWERCFG -SETDCVALUEINDEX <SCHEME_GUID> <SUB_GUID> <SETTING_GUID> <SettingIndex>
举个例子...这里有一个小批处理文件,我用它来关闭自适应亮度功能:
Echo Disable Adaptive Display Brightness Setting
for /f "tokens=2 delims=:" %%G in ('powercfg -getactivescheme') do set guid=%%G
for /f %%G in ("%guid%") do set guid=%%G
powercfg -setacvalueindex %guid% 7516b95f-f776-4464-8c53-06167f40cc99 fbd9aa66-9553-4097-ba44-ed6e9d65eab8 000
powercfg -setdcvalueindex %guid% 7516b95f-f776-4464-8c53-06167f40cc99 fbd9aa66-9553-4097-ba44-ed6e9d65eab8 000
前几行获取方案 guid,接下来的两行设置实际值
您可以为显示亮度设置做一些非常相似的事情...这是这个子组和设置 guid(与自适应亮度相同的子组):
Subgroup GUID: 7516b95f-f776-4464-8c53-06167f40cc99 (Display)
Power Setting GUID: aded5e82-b909-4619-9949-f5d71dac0bcb (Display brightness)
Minimum Possible Setting: 0x00000000
Maximum Possible Setting: 0x00000064
Possible Settings increment: 0x00000001
Possible Settings units: %
要从您的 C# 应用程序中调用它,您可以即时构建一个 cmd 文件并使用 Process.Start 运行它
希望有帮助!
【讨论】:
setbrightness 12 或其他任何操作。我的笔记本电脑只使用亮度热键以 10 为增量设置,但在黄昏时,10 级太暗,20 级太亮,所以我经常使用脚本在这两个值之间设置一个可容忍的水平。