Changer la luminosité de l'écran

Contenu du snippet

using System;
using System.Runtime.InteropServices;

static class ScreenBrightnessAdjustement {
  [DllImport("user32")]
  private static extern IntPtr GetDC(IntPtr Handle);

  [DllImport("user32")]
  private static extern int ReleaseDC(IntPtr Handle, IntPtr DeviceContext);

  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
  private struct RAMP {
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
    public ushort[] Red;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
    public ushort[] Green;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
    public ushort[] Blue;
  }

  [DllImport("gdi32")]
  private static extern int GetDeviceGammaRamp(IntPtr DeviceContext, ref RAMP lpv);

  [DllImport("gdi32")]
  private static extern int SetDeviceGammaRamp(IntPtr DeviceContext, ref RAMP lpv);

  public static byte GetBrightness() {
    byte Brightness = 0;
    IntPtr gammaDC = GetDC(IntPtr.Zero);
    if (gammaDC != System.IntPtr.Zero) {
      RAMP gammaArray = new RAMP();
      GetDeviceGammaRamp(gammaDC, ref gammaArray);
      Brightness = (byte)(gammaArray.Red[1] - 128);
    }
    ReleaseDC(IntPtr.Zero, gammaDC);
    return Brightness;
  }

  public static void SetBrightness(byte Brightness) {
    IntPtr gammaDC = GetDC(IntPtr.Zero);
    if (gammaDC != System.IntPtr.Zero) {
      RAMP gammaArray = new RAMP();
      gammaArray.Red = new ushort[256];
      gammaArray.Green = new ushort[256];
      gammaArray.Blue = new ushort[256];
      for (int i = 0; i < 256; i++)
        gammaArray.Red[i] = gammaArray.Green[i] = gammaArray.Blue[i] = (ushort)Math.Min(i * (Brightness + 128), ushort.MaxValue);
      SetDeviceGammaRamp(gammaDC, ref gammaArray);
    }
    ReleaseDC(IntPtr.Zero, gammaDC);
  }
}

Compatibilité : C# 1.x, C# 2.x, C# 3.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.