MonitorSleep
MonitorSleep is a very simple Windows utility (the entire program code is contained in the box below). Its purpose is to make it easy to put your monitor into “sleep” mode — and get it back out again.
MonitorSleep.exe (Win32 executable; 24KB)
To use MonitorSleep, download the executable and save it somewhere out of the way, then create one or more shortcuts to it. To set the monitor to sleep after 5 seconds of no activity and display a dialog box (when you move the mouse or press a key) that will let you restore normal operation, just use a shortcut as is.
For other functions, you’ll need to modify a shortcut by right-clicking it, selecting Properties, and adding a parameter to the Target field on the Shortcut tab. Leave a space after the file name that’s already there and add:
| 0 | to set the monitor to “always on” (never times out) |
| a number | to set the monitor to time out after the specified number of seconds |
| the letter “L” followed by a number; e.g., L15 | to set the monitor to time out after the specified number of seconds and immediately log off |
Example: you might place a shortcut named “Logoff Dark” on your Start menu that specifies MonitorSleep L15, and another shortcut that specifies MonitorSleep 0 in your Startup folder.
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdlib.h>
#pragma comment(lib, "powrprof.lib")
extern "C" {
#include <powrprof.h>
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow) {
unsigned int ps;
unsigned int timeout;
POWER_POLICY pp;
GetActivePwrScheme(&ps);
ReadPwrScheme(ps, &pp);
if (*lpCmdLine == 'l' || *lpCmdLine == 'L') {
if (*(lpCmdLine+1)) {
timeout = atoi(lpCmdLine+1);
if (timeout && timeout < 5) timeout = 5;
}
else timeout = 5;
pp.user.VideoTimeoutAc = timeout;
SetActivePwrScheme(ps, 0, &pp);
ExitWindows(0, 0);
return 0;
}
else if (*lpCmdLine) {
timeout = atoi(lpCmdLine);
if (timeout && timeout < 5) timeout = 5;
}
else {
timeout = pp.user.VideoTimeoutAc;
pp.user.VideoTimeoutAc = 5;
SetActivePwrScheme(ps, 0, &pp);
MessageBox(0, "Monitor on 5 second time-out; \
click OK to restore normal operation.",
"Monitor Timeout", MB_OK);
}
pp.user.VideoTimeoutAc = timeout;
SetActivePwrScheme(ps, 0, &pp);
return 0;
}