Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Declare Function GetDeviceGammaRamp Lib "gdi32" (ByVal hdc As Long, lpv As Any) As Long
Private Declare Function SetDeviceGammaRamp Lib "gdi32" (ByVal hdc As Long, lpRamp As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Sub SetBrightness(Brightness As Byte)
Dim gammaDC As Long
gammaDC = GetDC(0&)
If Not gammaDC = 0& Then
Dim i As Integer, arrayValue As Long, UIarrayValue As Integer
Dim gammaArray(0 To 255, 0 To 2) As Integer
For i = 0 To 255
arrayValue = i * (CLng(Brightness) + 128)
If arrayValue > 65535 Then arrayValue = 65535
Call CopyMemory(UIarrayValue, arrayValue, LenB(UIarrayValue))
gammaArray(i, 0) = UIarrayValue
gammaArray(i, 1) = UIarrayValue
gammaArray(i, 2) = UIarrayValue
Next i
Call SetDeviceGammaRamp(gammaDC, gammaArray(0, 0))
End If
Call ReleaseDC(0&, gammaDC)
End Sub
Private Function GetBrightness() As Byte
Dim gammaDC As Long
gammaDC = GetDC(0&)
If Not gammaDC = 0& Then
Dim gammaArray(0 To 255, 0 To 2) As Integer
Call GetDeviceGammaRamp(gammaDC, gammaArray(0, 0))
GetBrightness = CByte(gammaArray(1, 0) - 128)
End If
Call ReleaseDC(0&, gammaDC)
End Function