2012-08-11 46 views
10

我一直在研究从我的程序调整Windows平台上的屏幕。我知道有一个SetMonitorBrightness API允许这样做,但对我而言,问题是能够在Windows XP上调暗屏幕(该API不支持该功能)以及在桌面计算机上调暗屏幕会很好。用C++在Windows上调暗屏幕

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

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

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

在此先感谢。

回答

3

请原谅我,如果这些信息已经过时了,但我已经在过去使用SetDeviceGammaRamp做过。 “获取”版本也可用于状态保存和恢复。我已经看到它用于C#程序,所以它可能仍然是相关的,尽管不再常见。

+0

非常不错的补充。谢谢!我需要尝试一下。我唯一担心的是该API的描述说:“并非所有的直接彩色视频板都支持可加载伽马斜坡。” – c00000fd 2012-08-11 21:15:17

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/。他们也有一个较暗的应用程序,可以免费供个人使用,并且可以免费用于商业用途。他们甚至可以让你免费使用它,如果你与他们联系并解释它是为一个非营利组织。

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

+0

感谢您的意见。我没有考虑像你所描述的那样使用SetLayeredWindowAttributes()。但不会显示较深(较黑)的像素需要屏幕使用较少的能量? – c00000fd 2012-08-11 21:28:53

+0

要回答你的问题,为什么我不关掉显示器,我们有一个专门的软件,输出需要在屏幕上可见的数据,因此我想在不活动N分钟后调暗屏幕,然后如果操作员移动鼠标将返回到100%。 – c00000fd 2012-08-11 21:30:54

+0

@ user843732:它可能会消耗更少的能量,但您肯定知道的唯一方法就是尝试并测量功耗。改变像素的不透明度并不一定会改变背光的亮度,这是许多能源的来源。想想显示器的亮度已经升高,黑色显示为灰色。许多LCD屏幕只有一个背光亮度控制,有些是分段的,但很少(没有?)以每个像素为基础。至于你的应用程序,听起来很有趣。希望你得到它的工作。 – tinman 2012-08-11 22:48:46