2012-08-11 79 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