10

我一直在研究通过我的程序在 Windows 平台上调暗屏幕。我知道有一个 SetMonitorBrightness API 允许这样做,但对我来说,问题是能够在 Windows XP 上调暗屏幕(该 API 不支持)以及在台式计算机上调暗屏幕会很好。

所以我做了一些研究,发现这个实用程序似乎在 Windows XP 桌面上使我的屏幕变暗而没有问题。我试图联系作者以了解他们如何实现调光器,但我没有收到他们的回复。

所以我很想听听这个网站上的开发人员的意见,当不支持 SetMonitorBrightness API 时,你认为他们是如何设法调暗屏幕的?

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

提前致谢。

4

2 回答 2

4

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

您可能想查看DDC 协议,该协议允许您控制某些监视器的各个方面。可以在此处找到允许您执行此操作的 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/。他们也有一个调光器应用程序,个人使用免费,商业使用非免费。如果您联系他们并解释它是为非营利组织服务的,他们甚至可能允许您免费使用它。

如果您尝试将此作为节能程序,为什么不使用屏幕保护程序设置,在一段时间空闲后关闭显示器?任何状况之下

于 2012-08-11T21:20:43.323 回答
3

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

于 2012-08-11T21:09:19.413 回答