Программное выключение монитора
Выключить монитор из программы можно, но только если он совместим со стандартом EnergyStar. Об этом можно не беспокоиться, все современные мониторы удовлетворяют этому условию. Беспокоиться надо о другом. По непонятной причине с сайта на сайт упорно копируют один и тот же код на разных языках программирования, который якобы должен выключить монитор. Вот его вариант на Ассемблере:Code (Assembler) : Убрать нумерацию
- ; ВНИМАНИЕ! Это НЕПРАВИЛЬНЫЙ код!!!
- invoke GetDesktopWindow
- invoke SendMessage, eax, WM_SYSCOMMAND, SC_MONITORPOWER, 0
Но хватит о грустном. Правильный код программного выключения монитора будет таким:
Code (Assembler) : Убрать нумерацию
- ;-------------------------------------------------
- ; Правильный код выключения монитора
- ;-------------------------------------------------
- ; В FASM не определена константа HWND_BROADCAST, сделаем это самостоятельно
- HWND_BROADCAST = 0FFFFh
- ; Выключить монитор
- invoke SendMessage, HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2
Code (Assembler) : Убрать нумерацию
- ;-------------------------------------------------
- ; Правильный код включения монитора
- ;-------------------------------------------------
- ; В FASM не определена константа HWND_BROADCAST, сделаем это самостоятельно
- HWND_BROADCAST = 0FFFFh
- ; Включить монитор
- invoke SendMessage, HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, -1
В приложении пример программы, которая через секунду после запуска выключит монитор, а еще через 5 секунд включит его обратно.
Просмотров: 14497 | Комментариев: 20
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
ManHunter
(01.09.2020 в 12:49):
Чье-то окно висит, не дает ответа. Лучше этот способ вообще не использовать, он безнадежно устарел.
Petya
(01.09.2020 в 12:41):
Ммм, у меня одного SendMessage не возвращает управление и программа не завершается?
pRoger
(02.02.2014 в 19:15):
А под линуксом как?
serzh82saratov
(07.04.2012 в 19:12):
А как выключить один из двух мониторов?
не понял как подписаться, [del]
если можно на мыло.Премного благодарен.
не понял как подписаться, [del]
если можно на мыло.Премного благодарен.
XXX
(22.03.2012 в 14:43):
В Radminе я такой опции не нашел. Поэтому и занимаюсь ерундой.
ManHunter
(22.03.2012 в 14:23):
Не занимайся ерундой. Во всех нормальных системах удаленного администрирования есть опция "гасить монитор на время подключения".
XXX
(22.03.2012 в 14:16):
invoke BlockInput,1 - блокирует ввод с клавиатуры и движение мышью, но и Radmin блокируется тоже. Может не отключать монитор, а отключить вывод изображения на монитор. Как это сделать?
XXX
(22.03.2012 в 13:39):
Я использую Radmin и хочу отключать монитор управляемого компьютера. После отключения мыши и клавиатуры будет ли работать Radmin? Как сделать отключение мыши и клавиатуры в FASMe?
ManHunter
(22.03.2012 в 13:34):
Заблокировать мышку и клавиатуру.
XXX
(22.03.2012 в 13:33):
Как сделать так, чтобы после программного выключения монитора его можно было включить только программно или перезагрузкой, то есть включение монитора не происходило после шевеления мышкой или нажатия любой кнопки на клавиатуре?
brute
(24.01.2012 в 06:32):
у меня ноут sony_vaio, кнопки выключения монитора нет, а выключать на ночь надо быстро (не ждать 1-3 мин, пока сам выключится) - то есть программа нужна (тем более, что на PB - одна строчка). Однако, заметил, что после переустановки Win_XP (zver или chip) монитор не выключается! Оказалось, что для выключения необходимы родные дрова монитора, хотя других внешних признаков что они нужны (разрешение, цвета) нет - монитор хорошо работает с дровами из устанавливаемого образа.
п.с. у Фленова М.Е. в трудах "Программирование на.. глазами хакера" пример действительно не работает! Сдается мне, что Фленов - это Mikl__с wasma, или же пример с битмапой (дед мороз в шапочке) Фленов спёр у Mikl__'a..
п.с. у Фленова М.Е. в трудах "Программирование на.. глазами хакера" пример действительно не работает! Сдается мне, что Фленов - это Mikl__с wasma, или же пример с битмапой (дед мороз в шапочке) Фленов спёр у Mikl__'a..
AnAstAsiA
(08.05.2011 в 13:21):
Огромное спасибо!!!
ManHunter
(16.01.2011 в 18:46):
Включить головной мозг, перестать использовать компоненты, выучить WinAPI и сделать красиво.
fletch
(16.01.2011 в 18:43):
А как сделать аналогичное в делфи???
ManHunter
(04.12.2009 в 21:49):
Видимо это надо спрашивать на ресурсах, посвященных C++, а не здесь.
Андрей
(04.12.2009 в 21:47):
Спасибо большое, переписал на C++, но не могу найти ошибку, помогите.
[удалено]
[удалено]
k0l0p0k
(18.09.2009 в 20:12):
работает,однако :)
Vladislav
(19.07.2009 в 17:28):
Выражаю благодарность за разъяснительную работу и борьбу с копипастерами :)
Ку!
(30.04.2009 в 16:06):
А где ж блин отключение только одного монитора? ;) Видимо не все так просто ;)
Bagir
(25.04.2009 в 00:52):
Отличные разъяснения и главное рабочий пример. Большое Вам спасибо!
Добавить комментарий
Заполните форму для добавления комментария