Controlling Screen Brightens using C Programing for Windows OS

November 11, 2023 ・0 comments


         Controlling screen brightness programmatically can be a useful feature in certain applications or scenarios. In this article, we'll explore how to achieve this on a Windows system using C programming. We'll utilize the Windows API functions to interact with the device's gamma ramp and adjust the screen brightness accordingly.

Understanding Gamma Ramp:

          The gamma ramp is a set of color values that control the intensity of the red, green, and blue components displayed on the screen. By manipulating these values, we can effectively control the brightness of the entire screen.

Windows API Functions:

          We'll be using two key functions from the Windows API: `GetDeviceGammaRamp` and `SetDeviceGammaRamp`. The former allows us to retrieve the current gamma ramp values, while the latter enables us to set new values.

#include <windows.h>

void SetBrightness(WORD brightness) {
    HDC hdc = GetDC(0);
    if (hdc != NULL) {
        WORD gammaRamp[3][256];

        for (int i = 0; i < 256; i++) {
            gammaRamp[0][i] = gammaRamp[1][i] = gammaRamp[2][i] = (WORD)(i * brightness / 255);

        SetDeviceGammaRamp(hdc, gammaRamp);
        ReleaseDC(0, hdc);

Adjusting Screen Brightness:

              In the `SetBrightness` function, we create a gamma ramp with adjusted values based on the desired brightness level. The values are then set using `SetDeviceGammaRamp`. It's important to note that modifying screen settings may require administrative privileges, so ensure your program runs with the necessary permissions.

Example Usage:
int main() {
    // Set brightness to a value between 0 and 255
    SetBrightness(150);  // Adjust the value as needed

    return 0;


              Controlling screen brightness through C programming on Windows provides a flexible solution for applications requiring dynamic adjustments. However, keep in mind that this approach may not be universally compatible and might produce varying results on different systems and monitors. Always test thoroughly and consider the specific requirements of your application before implementing such functionality.

Post a Comment

If you can't commemt, try using Chrome instead.