A comprehensive Windows GUI utility for controlling monitor settings via DDC/CI protocol. Adjust brightness, contrast, color temperature, input sources, and more — all without touching your monitor's physical buttons.
- Brightness & Contrast — Real-time adjustment via DDC/CI
- RGB Gain Control — Fine-tune red, green, and blue channels independently
- Color Temperature Presets — Quick access to Warm (5000K), 6500K (D65), Cool (9300K), and sRGB
- Sharpness Control — Adjust display sharpness if supported
- Visual Monitor Layout — Click-to-select interface matching Windows Display Settings
- Input Source Switching — Switch between HDMI, DisplayPort, USB-C, DVI, VGA
- Power Control — Turn monitors On, Standby, or Off via software
- Apply to All Monitors — Sync settings across all connected displays
- Monitor Identification — On-screen overlays showing monitor numbers
- Auto Mode — Automatic brightness and color temperature based on time of day:
- Day (7 AM - 6 PM): 80% brightness, neutral colors
- Evening (6 PM - 9 PM): 60% brightness, slightly warm
- Night (9 PM - 7 AM): 40% brightness, warm/reduced blue light
- Profile System — Save and load custom configurations
- Command-line Support — Launch minimized or with a specific profile
- VCP Explorer — Query and set any VCP code for advanced users
- VCP Code Scanner — Discover which DDC/CI features your monitor supports
- DDC/CI Capabilities Viewer — View raw capabilities string from monitor
- Software Gamma Control — Independent RGB gamma curves via Windows API
- Factory Reset — Reset monitor to factory defaults (colors only or full reset)
- Real-time temperature, utilization, and clock speed
- Memory usage and fan speed
- Power draw monitoring
- Digital vibrance slider (placeholder for NVAPI integration)
- Windows 10/11
- PowerShell 5.1+ (included with Windows)
- DDC/CI Compatible Monitor — Most modern monitors support this; ensure it's enabled in your monitor's OSD settings
- NVIDIA GPU (optional) — For GPU monitoring tab
- Download
MonitorControlPro.ps1 - Right-click and select "Run with PowerShell"
# Download and run
irm https://raw.githubusercontent.com/YOUR_USERNAME/MonitorControlPro/main/MonitorControlPro.ps1 -OutFile MonitorControlPro.ps1
.\MonitorControlPro.ps1# Create a desktop shortcut
$WshShell = New-Object -ComObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$env:USERPROFILE\Desktop\MonitorControl Pro.lnk")
$Shortcut.TargetPath = "powershell.exe"
$Shortcut.Arguments = "-ExecutionPolicy Bypass -WindowStyle Hidden -File `"$PWD\MonitorControlPro.ps1`""
$Shortcut.IconLocation = "imageres.dll,109"
$Shortcut.Save().\MonitorControlPro.ps1# Start minimized (useful for startup)
.\MonitorControlPro.ps1 -StartMinimized
# Load a specific profile on launch
.\MonitorControlPro.ps1 -LoadProfile "Gaming"
# Combined
.\MonitorControlPro.ps1 -StartMinimized -LoadProfile "Night Mode"- Click on monitor rectangles to select different displays
- Use Tab to navigate between controls
- Slider values update in real-time
The VCP Explorer tab allows you to query and set any DDC/CI VCP code. Common codes:
| Code | Name | Range | Description |
|---|---|---|---|
0x10 |
Brightness | 0-100 | Display brightness level |
0x12 |
Contrast | 0-100 | Display contrast level |
0x14 |
Color Preset | varies | Color temperature preset |
0x16 |
Red Gain | 0-100 | Red channel gain |
0x18 |
Green Gain | 0-100 | Green channel gain |
0x1A |
Blue Gain | 0-100 | Blue channel gain |
0x60 |
Input Source | varies | Active input selection |
0x62 |
Volume | 0-100 | Speaker volume (if available) |
0x87 |
Sharpness | 0-100 | Image sharpness |
0x8D |
Audio Mute | 1/2 | Mute speakers |
0xD6 |
Power Mode | 1-5 | Power state control |
0x04 |
Factory Reset | 1 | Reset all settings |
0x08 |
Color Reset | 1 | Reset color settings only |
| Value | Input |
|---|---|
0x01 |
VGA |
0x03 |
DVI |
0x0F |
DisplayPort 1 |
0x10 |
DisplayPort 2 |
0x11 |
HDMI 1 |
0x12 |
HDMI 2 |
0x13 |
USB-C |
| Value | State |
|---|---|
0x01 |
On |
0x02 |
Standby |
0x04 |
Off |
Profiles are saved as JSON files in %APPDATA%\MonitorControlPro\
{
"Name": "Gaming",
"Brightness": 80,
"Contrast": 70,
"Red": 50,
"Green": 50,
"Blue": 50,
"Gamma": 100,
"GammaRed": 100,
"GammaGreen": 100,
"GammaBlue": 100
}Night Mode — Reduced brightness and blue light
{
"Name": "Night Mode",
"Brightness": 35,
"Contrast": 50,
"Red": 50,
"Green": 48,
"Blue": 40,
"Gamma": 100,
"GammaRed": 100,
"GammaGreen": 95,
"GammaBlue": 80
}Photography — Accurate colors for editing
{
"Name": "Photography",
"Brightness": 50,
"Contrast": 50,
"Red": 50,
"Green": 50,
"Blue": 50,
"Gamma": 100,
"GammaRed": 100,
"GammaGreen": 100,
"GammaBlue": 100
}- Enable DDC/CI — Check your monitor's OSD settings for DDC/CI option and ensure it's enabled
- Check Cable — DDC/CI works best over DisplayPort and HDMI; some adapters don't pass through DDC/CI signals
- Try Different Port — Some monitor ports may have DDC/CI disabled
- Some monitors have a delay (~50ms per command)
- Certain VCP codes may not be supported by your specific monitor
- Use the VCP Scanner to discover which features your monitor actually supports
Laptop integrated displays typically don't support DDC/CI. Use Windows brightness controls or WMI-based tools instead.
Your monitor either:
- Doesn't support DDC/CI
- Has DDC/CI disabled in OSD
- Is connected through an incompatible adapter/dock
- dxva2.dll — Windows DDC/CI implementation
GetPhysicalMonitorsFromHMONITORGetVCPFeatureAndVCPFeatureReplySetVCPFeatureCapabilitiesRequestAndCapabilitiesReply
- gdi32.dll — Software gamma control
SetDeviceGammaRamp
- user32.dll — Monitor enumeration
EnumDisplayMonitorsGetMonitorInfo
- Profiles:
%APPDATA%\MonitorControlPro\*.json - No registry modifications
- No admin rights required
This project was inspired by and incorporates concepts from these excellent open-source projects:
- Twinkle Tray — System tray brightness control, time-based automation
- Monitorian — Clean WPF implementation, unison mode concept
- ControlMyMonitor — Comprehensive VCP exploration
- MonitorConfig — PowerShell DDC/CI module
- LightBulb — Gamma-based color temperature
- display-switch — Input source switching concepts
Contributions are welcome! Please feel free to submit a Pull Request.
- Clone the repository
- Edit
MonitorControlPro.ps1in your preferred editor (VS Code with PowerShell extension recommended) - Test changes by running the script directly
- System tray mode with persistent background operation
- Hotkey support for quick adjustments
- Multi-monitor profile linking
- AMD GPU monitoring support
- NVAPI integration for digital vibrance
- WMI fallback for laptop displays
- Scheduled profile switching
- Per-application profiles
MIT License — see LICENSE for details.
This software interacts with monitor hardware via DDC/CI protocol. While DDC/CI is a standard protocol and this software uses official Windows APIs, use at your own risk. The author is not responsible for any damage to monitors or other hardware.
Made with PowerShell and WPF
Report Bug ·
Request Feature
