ClickMonitorDDC  7.2

Martin <>


Download Portable Version
can be run without Installation
Download Setup Version
uses Windows Install/Uninstall
      Click taskbar notification icons to adjust the real monitor-backlight-brightness/contrast
      or use mouse wheel over notification icons to increase/decrease corresponding value,
      much more comfortable and faster than manually messing around with monitor buttons,
      works with external monitors (DDC-protocol) and Laptop-LCD-Display.

      The notification icons inform you about the monitor values,
      you simply look at the icons to check if the wanted values are already set.
      You can change monitor values by using sliders or clicking buttons,
      but you can also create powerful command lines, which can be used in batch files
      or popup menu entries or be appended in icon properties shortcut target.
      Command-lines can also be executed automatically by defined times.
      You can define hot keys or mouse wheel combinations for executing command-lines,
      this even works in fullscreen-games!
      Command-lines can be executed automatically, if selected programs are running in fullscreen,
      exiting fullscreen restores original values.

      Select a special monitor by prepending monitorname, modelname, serialnumber,
      monitornumber or a self-defined monitorname.
      PL2779Q b 36 HPA34T c - 5 sets brightness 36 for monitor with name PL2779Q
      and decreases actual contrast by 5 for monitor with name HPA34T

      You can change color-profiles, select monitor-inputs, reset monitor, power off/on monitor,
      dim monitor, set monitor-speaker-volume, set system-volume, rotate display and
      set saturation/vibrance.
      You can do this by user-interface or by command-arguments.

      ClickMonitorDDC requires Windows 7, 8 or 10.
      You use this software at your own risk, I disclaim any responsibility for any harm.
      You are allowed to use and spread this program for free.

      optional Argument  optional     Value      Description
  If you are using multiple monitors, b + or -     0 up to 100      sets brightness (e.g. b 50)
  you can start command-line with c + or -     0 up to 100      sets contrast (e.g. c 47)
  selecting a special monitor,          
  the following arguments will be r + or -     0 up to 255      sets red-luminance
  applied to this selected monitor. g + or -     0 up to 255      sets green-luminance
  If you do not select a monitor, l + or -     0 up to 255      sets blue-luminance (bl or l or i)
  the monitor under cursor can be           
  auto-selected (option in Settings). p     6500K      select color-temperature, User for changing colors
  You can select a monitor by monitorname,        
  modelname, serialnumber, monitornumber j     Standard      select monitor-specific presets
  or a self-defined monitorname.        
  If you pause the mouse pointer over s     HDMI1      select monitor-input (HDMI,DisplayPort,DVI,VGA)
  the listed monitor there will appear          
  a tooltip-window with modelname, k + or -     0 up to 100      sets color-saturation/vibrance in graphics driver
  serialnumber and so on, but not all          
  monitors deliver these informations. o + or -     0 up to 100      sets volume for monitor-speaker/Audio-out
  Monitornumber means position of the      
  listed monitor, but using monitornumber v + or -     0 up to 100      sets default-volume
  is not recommended, because sometimes m      mutes default-volume
windows changes positions. u      unmutes default-volume
  If specifying monitorname, modelname        
  or serialnumber, omit spaces, n       0 or 1      disables or enables dimming
  for instance HP w2207      
  must be written as HPw2207 y       0 or 1      disables or enables using brightness for target
  or use "HP w2207"           
  at least use two chars, ?          notification for current brightness/contrast/volume
  so HP would do      
    w          rotates display orientation clockwise by 90 degrees
    x          all monitors off (or specify monitorname x)
    f          restore default Monitor-factory-settings
    t          for instance      t b 0 c 0 t b 90 c 80
               toggles between b 0 c 0 and b 90 c 80
    ;          pauses 100 ms (can be used multiple times)
    ,          pauses 1000 ms (can be used multiple times)
    #          following commands are ignored
    q          terminates ClickMonitorDDC
    z          restarts ClickMonitorDDC
    !          starts any program e.g. ! notepad.exe
    d          returns current Monitor-brightness as errorlevel
    e          returns current Monitor-contrast as errorlevel
             getVCP get_VCP setVCP see end of informations
You can use multiple arguments in one commandline (maximum length 259 chars), e.g.  PL2779Q b + 10 c - 5 HPw2207 b 23 c 49

more informations

      For controlling your monitor over monitorcable, a fully functional graphics driver has to be installed, and make sure your monitor
      has DDC/CI-protocol enabled, also your monitor must support MCCS (VESA Monitor Control Command Set), but monitors differ
      in implementing MCCS, so not all arguments may work, especially selecting color-profiles and inputs are often not fully supported,
      besides some monitors offer predefined game and film-modes with fixed values, which prevents some arguments from working.

      ClickMonitorDDC is managed by its notification icons, therfore make sure that these icons are not hidden,
      but shown on the taskbar notification area. In Windows settings you can select which icons appear on the taskbar.
      Or drag and drop icons fom hidden area to taskbar. You can also change the sequence of taskbar icons by drag and drop the icon.

      ClickMonitorDDC supports brightness of laptop/notebook-LCD-displays. Laptops have special FN-key-combinations to do this,
      nevertheless I implemented support for laptop-brightness, because laptops allow to add an external monitor,
      and it would be irritating if ClickMonitorDDC would not show both displays.
      ClickMonitorDDC shows values between 0 - 100, which is fine with external monitors,
      but some internal LCD-displays support less brightness-levels, the nearest level is chosen automatically.

      If you don't prepend a monitorname, modelname or serialnumber in command-lines, then the commands affect the default monitor,
      which is the selected monitor in ClickMonitorDDC-window. If you run multiple monitors, then ClickMonitorDDC can set
      automatically the monitor under the cursor as default monitor, you can enable this feature in settings.

      ClickMonitorDDC can create menu-popup-entries for executing command-lines, if you enter an additional comment,
      you can show or hide the corresponding commandline.

      ClickMonitorDDC offers in settings an option named 'show notifications'. If you set values directly in ClickMonitorDDC-window,
      this option has no effect, but if you press defined hot keys and ClickMonitorDDC-window is invisible,
      then setting this option gives you an optical feedback, what the pressed hot key did.

      ClickMonitorDDC supports easy to use command-line-arguments, maybe the rarely used toggle-feature needs some extra explanation.
      for instance define a hotkey with this commandline
      t b 0 c 0 t b 100 c 100
      first time you press the hotkey, you set monitor brightness 0 and contrast 0,
      second time you press the same hotkey, you will set brightness 100, contrast 100,
      third time behaves like first time and so on, this way using one hotkey, you can execute two different profiles in turn.

      In settings(Timer,Transfer,Limits), you can define up to 8 times to auto-run-command-lines. Mark checkbox for activating.
      If the time-condition is fulfilled then the command-line is executed one-time per day, not permanently like
      software-color-filter-gamma-ramp-programs do. ClickMonitorDDC instead changes the real internal monitor-hardware-values.
      Monitor-values are stored in EEPROM inside monitor. If EEPROMS are excessively written (at least more than 100000)
      they could lose storage-functionality, so more a theoretical issue. But for safety ClickMonitorDDC does not continuously
      write to monitor. Also ClickMonitorDDC buffers values, so the same value is only written once to monitor.
      Executing auto-command-lines only one time per day allows you still changing values as you want.
      07:00 AM b 30
      08:00 AM b 40
      09:00 AM b 50
      07:30 PM b 40
      08:20 PM b 30
      08:40 PM b 20
      If you boot up your computer at 02:00 PM then the nearest past time-command b 50 is executed one-time per day,
      at 7:30 PM b 40 will be executed one-time. You can force executing command-line again by restarting ClickMonitorDDC,
      really exit and start again or use rescan monitors, simply double-clicking ClickMonitorDDC will have no effect,
      because ClickMonitorDDC does not start again, if already running.
      Alternatively entering and leaving ClickMonitorDDC-settings will also check and run auto-run-command-line.
      You could also execute command-lines with multiple arguments
      07:00 AM b 10 c 20 l 250
      08:00 AM b 20 c 25 l 252
      This would increase brightness, contrast and blue-luminance.

      Controlling monitor is done by VCP-codes defined by MCCS (VESA Monitor Command Control Set),
      ClickMonitorDDC makes the useful VCP-codes available by User-Interface or by commandline-arguments,
      nevertheless there are two general arguments,
      e.g.  getVCP 0x12         shows actual and maximum contrast in a messagebox
      e.g.  get_VCP 0x12        returns actual VCP code value as errorlevel
      e.g.  setVCP 0x10    50  sets monitor-brightness to 50, same as b 50
      e.g.  setVCP 0x10 + 10  increases actual monitor-brightness by 10, same as b + 10
      but you should not use setVCP or getVCP, because in rare cases it could harm your monitor,
      if you really want to dig deeper in VCP-codes, then use softMCCS from EnTech Taiwan and read MCCS-documentation.



On some systems, monitorname was not displayed, fixed.
Now auto-run commands can also be run if app is not in full-screen.


Better usage of duplicated (cloned) monitors.
ew argument get_VCP returns VCP code value as errorlevel e.g. get_VCP 0x12 returns actual contrast.


Now clicking icons with middle mouse-button toggles two values, enter values in mouse-settings, e.g. brightness 0 and 50,
then middle-clicking a brightness-icon sets brightness 0, again middle-clicking sets 50, again middle-clicking 0 and so on.
Using mousewheel with defined modifiers did not execute assigned commandline. Fixed.
Default-delay for repeating command-lines is 100 ms, can now be lowered to 10 ms.


In rare cases using mouse-wheel caused temporarily strange effects like system-beeps. Fixed.
Exiting selected fullscreen-programs now also restores eventually changed color-temperature or user-colors.
Clicking outside ClickMonitorDDC-mainwindow automatically closes the window, can now be deactivated in settings.
Improved notifications, default is off, because it can be annoying.


improved VCP-code-section


New VCP-code-section (right click notification icon)
Restore values did not work in version 6.6


Shutting down windows with some rare hardware-configuration could result in an error-message. Fixed.
new arguments
e.g.  getVCP 0x12         shows actual and maximum contrast in a messagebox
e.g.  setVCP 0x10    50  sets monitor-brightness to 50, same as b 50
e.g.  setVCP 0x10 + 10  increases actual monitor-brightness by 10, same as b + 10


Exiting selected fullscreen-programs now also restores eventually changed preset.
Improved restore brightness/contrast after monitor wake up.
t Toggle remembers position after restart.
Check for update, daily, weekly, never.


Now you can select monitor-specific presets (e.g. Movie, Games), new argument j for selecting presets, e.g.  j  Standard


No timer commands or dimming during fullscreen-auto-run-commands.


There was a timing problem with very few monitors, which wrongly report 0x6B,
this could prevent ClickMonitorDDC from detecting these monitors. Fixed.


Now also WUP-Apps (these new Win8/10 apps like Windows Edge) can be used for Auto-Run,
that means if running maximized, a command-line is executed, but WUP-Apps cannot be selected by file-requester,
so you have to run the app, if the app is visible, then the app is listed and can be selected for auto-run.
Setting brightness in monitor is normally done by code 0x10, but a few monitors use code 0x6B, now you can choose code.
New argument # starts comment, so after # all commands are ignored, this way you can keep your command-line for future usage.
New argument ! starts any program e.g. ! notepad.exe


You can set NVIDIA Digital Vibrance and AMD Saturation by using mouse wheel over notification icon or use new argument k
You can have in your computer a NVIDIA and a AMD graphics card, both with monitors attached,
each monitor has its own independent saturation-value/icon.
Graphics driver sends less (0-49) or more (51-100) saturated colors to monitor,
a higher value (51-100) can enhance videos and games, for normal text-work use default 50
ClickMonitorDDC shows Saturation/Vibrance always in range 0 - 100, that means AMD Saturation range 0 to 200
is recalculated to 0 - 100 by respecting min max levels. k 50 would result in set Saturation 100 for AMD.
Now you can select programs like browser, video-players or games and define an individual command-line,
this way you can automatically apply different brightness/contrast/saturation-values for each selected program.


Improved powering off monitors.
new arguments, n 0 disable dimming monitor, n 1 enable dimming,
y 0 disable using brightness from source monitor for target monitor, y 1 enable


Now you can power off a single monitor by clicking a checkbox beside the listed monitor.
Some unusual multi-monitor-setup could result in additional notification icons, which disappeared only on mouse over.


Improved settings of notification icons. There is also a new notification icon for a possible monitor speaker.
Turning on/off a monitor connected by DisplayPort could open window and leave icons behind. Fixed.


Now you can rotate display orientation clockwise by 90 degrees, can also be done by hot key with new argument w
A few monitors report erroneously success if still processing a previous command,
now you can separate commands by ; (pauses 100 ms) , (pauses 1000ms)
for instance r 255 , g 255 , bl 255 would give the monitor enough time to process each command,
but normally these pauses are not needed


Latest versions handled laptop-LCD's in a different way, which did not work with some laptops,
now the old reliable method is used again, which should work with any laptops.
Most messageboxes can now be suppressed.


ClickMonitorDDC can control default-volume by slider, buttons or argument v
There is a new slider in main-window-RGB-area for monitor-speaker/Audio-out-volume, or use new argument o
Right click listed monitor, select dim monitor, enter time-period of inactivity and dim-brightness.


Restore last values, hiding icons, ignore monitor now differentiates identical monitors.
Right click listed monitor to modify its name, maybe useful for identical monitors.


In settings there are new buttons to check for update version.
If you right click a listed monitor in main window, then you can hide or show the icons for this monitor,
also you can determine not to read values from a device, maybe useful if AV receiver, saves 100 ms.


some minor bug-fixes regarding icons, tooltips, utilize monitors.


New option: When ClickMonitorDDC starts, last brightness and contrast values will be restored,
may be useful if monitor forgets set values after power off.
New options for (de)activating hot keys or mouse wheel. If deactivated, corresponding hook is not installed.
Now you can set a repeat delay value for hot keys or mouse wheel,
useful if you want to slow down increasing/decreasing commands like for instance b + 10


New Log-File option in settings, may be useful for informational or debugging purposes.
You can choose any name or location for protocol-file, default is ClickMonitorDDC.txt in userprofile-directory.
Runing ClickMonitorDDC with argument f will restore default Monitor-factory-settings,
equivalent to clicking 'Reset Monitor' in ClickMonitorDDC-Window.


Sometimes volume-icon was automatically added. fixed.

Verify values: After set value, read value from monitor, to check success, because a few monitors report success,
but in fact there was no change, costs additional 50 ms.
Save values: A few monitors forget changes done by user over monitorcable after powering off, this option makes sure
that values are really stored in monitor, costs additional 200 ms.


You can choose from seven different fonts for notification icons, especially useful for differentiating multiple monitors.
Now you can run ClickMonitorDDC without notification icons, then ClickMonitorDDC-main-window can only be opened
by running program again (without arguments), and context menu can only be opened by right clicking in window.
Argument x shuts all monitors down to power-safe-mode, this is done by windows, and is not monitor-specific.
If you prepend a monitornumber, monitorname, modelname or serialnumber, only this monitor is set to power-safe-mode
by using MCCS-VCP-control-code. For instance the following command-line sets monitor named PHL32M
and monitor named HP27WZ to power-safe-mode. All other monitors are ignored.
PHL32M x HP27WZ x
Running this commandline again would wake up these monitors.


ClickMonitorDDC now shows brightness/contrast notification icons for each monitor, not only one icon like in earlier versions,
this is very useful with multiple monitors, because now you can use mouse wheel for each monitor-icon.
You should arrange notification icons by drag & drop. This cannot be done automatically by program.


ClickMonitorDDC Portable version is a file which can be run from any location without installation,
but you can also download a Setup version, which uses the standard Windows Install/Uninstall-procedure.
Setup version was created with Inno Setup by Jordan Russell, Martijn Laan.
If you want to 'uninstall' ClickMonitorDDC, right click notification icon and then click 'Uninstall program'
or use Windows Uninstall program if using Setup version.
It doesn't matter which version you use, both versions run the same ClickMonitorDDC.exe file.
If you mess around with monitor-buttons, ClickMonitorDDC may show outdated values.
Using the new Settings-Option 'Reread values from monitors' will force ClickMonitorDDC to reread values from external monitors
before opening ClickMonitorDDC-window, but this delays opening of window, so normally this option is not recommended,
alternatively you can right click notification icon and click 'Rescan monitors'.
But if you only work with ClickMonitorDDC there will never be outdated values.
Windows informs programs if Laptop-LCD-brightness changes, but for external monitors this is impossible.


ClickMonitorDDC is a small program without any suspicious activities, no calling home, no update-function, no writing to registry,
nevertheless sometimes very few heuristic Anti-Virus-engines think there would be suspicious code and show an unspecific warning.
This new version is created with other compiler option and at least for the moment the warnings are gone.


ClickMonitorDDC supports multiple monitors, simply by clicking in the main-window, or by using commandlines with
monitorname, modelname, serialnumber or monitornumber, can also be used for mouse wheel + key-combinations,
but for easy use, you can simply use mouse wheel alone over noctification-icons.
ClickMonitorDDC realizes hotkeys by keyboard/mouse-hooks.
Now these hooks run in a separate thread, this way mouse/keyboard-handling should always be smooth.


Monitor name should be defined in EDID using 0xFC descriptor, external monitors normally do this, but internal LCD-Display
often do not implement this 0xFC descriptor, instead sometimes there is a 0xFE descriptor, which means unspecified text,
ClickMonitorDDC now uses this unspecified text for monitor name if there is no concrete monitor name definition.
ClickMonitorDDC shows values between 0-100, which is fine with external monitors, but internal LCD-display may support less levels,
often only 16 levels, for instance 1 3 4 5 6 8 10 13 17 22 29 38 49 63 80 100.
Windows says every laptop must report a maximum brightness level of 100,
but there are old laptops reporting for instance 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15.
These numbers only reflect a corresponding hardware-brightness-level and different Laptop models often have different numbers.
ClickMonitorDDC now recalculates level numbers to 0 - 100 in a linear more user-friendly way.
If you activate in settings 'same Laptop-Brightness for battery and plugged', then Laptop-Display keeps same brightness
ignoring power-source-changes. Windows10 comes with Battery saver feature, which can automatically lower brightness,
so for instance brightness 100 is forced down to brightness 70, there is no way to set brightness back to 100 if Battery saver
with lower brightness option is active, therefore 'same Laptop-Brightness for battery and plugged' is temporarily deactivated if
Battery saver is detected. Battery saver also gets automatically activated if 'Power saver' plan is chosen and Laptop is on battery.


ClickMonitorDDC now uses for Laptop-Display-handling WmiMonitor classes instead of DeviceIoControl.


You are allowed to use and spread ClickMonitorDDC for free. You use this software at your own risk, I disclaim any responsibility for any harm.
There is no warranty, express or implied. The author specifically disclaim any implied warranties of merchantability and fitness for a particular purpose.
In no event will the author be liable for any damages, including but not limited to any lost profits, lost savings or any incidental or consequential damages,
whether resulting from impaired or lost data, software or computer failure or any other cause, or for any other claim by the user or for any third party claim.