Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Languages / C#

Screen Brightness Control for Laptops and Tablets

4.83/5 (26 votes)
7 Aug 2011CPOL3 min read 87.8K   13.4K  
A tiny program for quickly adjusting the screen brightness of your laptop or tablet PC
Screenshot

Introduction

With this little tool, you can quickly adjust the screen brightness of your laptop or tablet. It also supports commandline arguments to fit your needs.

Background

I recently bought a tablet and wasn't quite satisfied with how to change the screen brightness. So I searched the web for a simple solution - but had no success. First, I hit on the IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS Control but many people struggled with invoking it in C# - in fact, I found only one person that seemed to have managed it... but this thread was closed and I found no way to contact him - *lol* - so I tried another workaround some people suggested and screwed up my gamma and contrast settings - haha - finally I found this page of Samuel Lai - he made a simple sidebar gadget using WMI to access the screen brightness control and also provided some code - funny, as during my search I often read people saying that there is no support in C#. Later on, I realized that I should have taken a closer look at the IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS Control site as Microsoft says here that this control is no longer supported and one should use the WmiMonitorBrightness Class... O.K., whatever - enough blabla :)

Using the Code/Program

The Program

I've tested the program on Win7 (x86) - AFAIK, it won't work on ordinary PCs, as they don't have the necessary hardware support for this. In case of an incompatible system, a message will pop up and the program will quit.

I used VS2010 and .NET 4 for building - therefore, you will need .NET 4 to run the program and VS2010 to change the code... probably you can use a lower version of VS, but AFAIK, the designer isn't compatible.

Well, when starting the program without arguments, it will hide and an icon shows up in the taskbar infoarea. The trackbar shows up by clicking on the icon. Right clicking the icon will open an exit popup.

Arguments

  • quit - The trackbar shows up and will close after 4 secs of inactivity.
  • show - The trackbar shows up and will hide after 4 secs of inactivity.
    Well, in fact, you can type anything in order to gain this result - unless it's not listed here as argument...^^
  • hide - will hide the form initially - this is only useful in combination with a brightnesslevel statement:
  • brightnesslevel in % - You can pass a level statement to set the brightness immediately (e.g. 25% ) - the level is set to the next higher available level, if the argument is not in the level array

Arguments are seperated by blanks!
e.g. ScreenBrightness 10% quit
ScreenBrightness hide 55%
The order of the arguments is not relevant.

The Code

Well, I've used the WMI queries from Samuel Lai and wrapped around the visual stuff...
The WmiMonitorBrightness class offers a handful of read-only properties about the actual brightness settings: Active, CurrentBrightness, InstanceName, Level and Levels.

A point of interest might be the Level property as it is an array of valid brightnesslevels supported by the hardware. They may differ from machine to machine. E.g. my laptop has only 7 levels while my tablet has 10.

My app has only support for one screen - if you have multiple screens, you'll need to query each separately, as I've understood... though I don't see a method for setting the brightness for an individual screen...?

The WmiMonitorBrightnessMethods class is used for setting the screen brightness via the WmiSetBrightness method.

So far, hope you'll like it! :)
Cheers,
Stephan

History

  • 4th August, 2011: Initial version
  • 6th August, 2011: Minor update
    • Included actual brightness value in tooltip text of icon
    • Actual brightness value of form will refresh when opening form or moving mouse over icon

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)