使用C ++在Windows上调暗屏幕

时间:2012-08-11 20:59:37

标签: c++ windows winapi monitor screen-brightness

我一直在考虑从我的程序中调整Windows平台上的屏幕。我知道有一个允许这样的SetMonitorBrightness API,但问题是,能够在Windows XP上调暗屏幕(该API不支持)以及桌面计算机上的屏幕变暗也会很好。

所以我做了一些研究,发现this utility似乎在Windows XP桌面上显示屏幕没有问题。我试图联系作者,了解他们如何实现调光器,但我没有收到他们的回复。

所以我很想知道这个网站上的开发人员,当你不支持SetMonitorBrightness API时,你认为他们怎么设法调暗屏幕?

PS。我是一名新手开发者,我自己也在尝试为我们的小企业编写节能计划。它是一个非营利组织,我们没有资金聘请Windows开发人员为我们这样做。我们的大多数计算机都是Windows XP桌面,因此您可以看到我无法使用SetMonitorBrightness API,因为它已广泛记录在网络上。

提前致谢。

2 个答案:

答案 0 :(得分:4)

在您引用的情况下,请使用Dependancy Walker查看屏幕保护程序。我的猜测是他们创建一个全屏窗口并使用SetLayeredWindowAttributes()为窗口设置半透明设置,从而使屏幕显示为灰色。我怀疑这会为你节省很多钱。

您可能需要查看允许您控制某些监视器方面的DDC protocol。可以在这里找到允许您执行此操作的MS API:http://msdn.microsoft.com/en-us/library/windows/hardware/ff570290%28v=vs.85%29.aspx,您也应该查看I2C函数。

或者你可以找一个现成的库来为你做DDC的事情,比如http://www.nicomsoft.com/products/i2c/。他们也有一个可以免费供个人使用和非免费商业用途的调光应用程序。如果您联系他们并为非营利组织解释,他们甚至可以允许您免费使用它。

如果您尝试将此作为节能计划,为什么不使用屏幕保护程序设置在一段时间闲置后关闭显示器?无论如何

答案 1 :(得分:3)

如果此信息已过时,请原谅我,但我过去使用SetDeviceGammaRamp完成了此操作。 “Get”版本也可用于状态保存和恢复。我已经看到它在C#程序中使用过,所以它可能仍然是相关的,虽然不再常见。