Changer la luminosité de l'écran

Contenu du snippet

Imports System
Imports System.Runtime.InteropServices

Module ScreenBrightnessAdjustement
  <DllImport("user32")> _
  Private Function GetDC(ByVal Handle As IntPtr) As IntPtr
  End Function

  <DllImport("user32")> _
  Private Function ReleaseDC(ByVal Handle As IntPtr, ByVal DeviceContext As IntPtr) As Integer
  End Function

  <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)> _
  Private Structure RAMP
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=256)> Public Red() As UShort
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=256)> Public Green() As UShort
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=256)> Public Blue() As UShort
  End Structure

  <DllImport("gdi32")> _
  Private Function GetDeviceGammaRamp(ByVal DeviceContext As IntPtr, ByRef lpv As RAMP) As Integer
  End Function

  <DllImport("gdi32")> _
  Private Function SetDeviceGammaRamp(ByVal DeviceContext As IntPtr, ByRef lpv As RAMP) As Integer
  End Function

  Public Function GetBrightness() As Byte
    Dim Brightness As Byte = 0
    Dim gammaDC As IntPtr = GetDC(IntPtr.Zero)
    If Not gammaDC = IntPtr.Zero Then
      Dim gammaArray As RAMP = New RAMP()
      Call GetDeviceGammaRamp(gammaDC, gammaArray)
      Brightness = CByte(gammaArray.Red(1) - 128)
    End If
    Call ReleaseDC(IntPtr.Zero, gammaDC)
    Return Brightness
  End Function

  Public Sub SetBrightness(ByVal Brightness As Byte)
    Dim gammaDC As IntPtr = GetDC(IntPtr.Zero)
    If Not gammaDC = IntPtr.Zero Then
      Dim gammaArray As RAMP = New RAMP()
      gammaArray.Red = CType(Array.CreateInstance(GetType(UShort), 256), UShort())
      gammaArray.Green = CType(Array.CreateInstance(GetType(UShort), 256), UShort())
      gammaArray.Blue = CType(Array.CreateInstance(GetType(UShort), 256), UShort())
      For i As Int16 = 0 To 255
        Dim arrayValue As UShort = CUShort(Math.Min(i * (Brightness + 128), UShort.MaxValue))
        gammaArray.Red(i) = arrayValue
        gammaArray.Green(i) = arrayValue
        gammaArray.Blue(i) = arrayValue
      Next i
      Call SetDeviceGammaRamp(gammaDC, gammaArray)
    End If
    Call ReleaseDC(IntPtr.Zero, gammaDC)
  End Sub

End Module

Compatibilité : VB 2005, VB 2008, VB.NET 1.x

Disponible dans d'autres langages :

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.