Привет всем. Вощем задача такая, написать программу которая программно выключает монитор, это необходимо для того чтобы когда я удаленно например RAdmin-ом чегото делаю, операторы не глазели. Вобщемто нашел такую команду SendMessage(Handle,WM_SYSCONNAND,SC_MONITORPOWER,2) монитор гаситься но при нажатии на клавишу или мышку он опять зажигаеться, т.е. чтото типа ждущего режима. Подскажите как сделать чтобы он гасился намертво.
Здравствуйте, deamon_tt, Вы писали:
_>Привет всем. Вощем задача такая, написать программу которая программно выключает монитор, это необходимо для того чтобы когда я удаленно например RAdmin-ом чегото делаю, операторы не глазели. Вобщемто нашел такую команду SendMessage(Handle,WM_SYSCONNAND,SC_MONITORPOWER,2) монитор гаситься но при нажатии на клавишу или мышку он опять зажигаеться, т.е. чтото типа ждущего режима. Подскажите как сделать чтобы он гасился намертво.
_>Заранее большое спасибо за ответы.
Имхо вопрос похож на "как программно переключить канал телефизора в комнате соведа"
Перед тем, как улучшиться, ситуация ухудшается. (из законов Мерфи)
Здравствуйте, deamon_tt, Вы писали:
_>Привет всем. Вощем задача такая, написать программу которая программно выключает монитор, это необходимо для того чтобы когда я удаленно например RAdmin-ом чегото делаю, операторы не глазели. Вобщемто нашел такую команду SendMessage(Handle,WM_SYSCONNAND,SC_MONITORPOWER,2) монитор гаситься но при нажатии на клавишу или мышку он опять зажигаеться, т.е. чтото типа ждущего режима. Подскажите как сделать чтобы он гасился намертво.
_>Заранее большое спасибо за ответы.
Интересно какой монитор в данном случае гасится по SC_MONITORPOWER
Здравствуйте, Macr0s, Вы писали:
M>Имхо вопрос похож на "как программно переключить канал телефизора в комнате соведа"
В настройках экрана-питание есть вкладка, через сколько времени включать монитор в энергосберегающий режим, фактически это есть его отключение. Так что твое имхо!!! ... лана проехали
> это необходимо для того чтобы когда я удаленно например RAdmin-ом чегото делаю, операторы не глазели. >
А не лучше ль RDP? Всё, что будут видеть операторы — предложение на вход?
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Здравствуйте, deamon_tt, Вы писали:
_>Привет всем. Вощем задача такая, написать программу которая программно выключает монитор, это необходимо для того чтобы когда я удаленно например RAdmin-ом чегото делаю, операторы не глазели. Вобщемто нашел такую команду SendMessage(Handle,WM_SYSCONNAND,SC_MONITORPOWER,2) монитор гаситься но при нажатии на клавишу или мышку он опять зажигаеться, т.е. чтото типа ждущего режима. Подскажите как сделать чтобы он гасился намертво.
_>Заранее большое спасибо за ответы.
Здравствуйте, deamon_tt, Вы писали:
_>В настройках экрана-питание есть вкладка, через сколько времени включать монитор в энергосберегающий режим, фактически это есть его отключение.
А после отключния монитора таким способом (через вкладку "питание") не пробовал мышкой пошевелить? Фактически это одно и то же. Только делается как-то по-другому. Счас смотрел сообщения с помощью Spy++. Не смог отловить WM_SYSCOMMAND при автоматическом выключении монитора. Но при движении мышью он включался!
Требую сатисфакции!
Перед тем, как улучшиться, ситуация ухудшается. (из законов Мерфи)
Здравствуйте, Stanky, Вы писали:
S>Там он тоже есть!!!
А можно поподробнее? На сайте микрософта написано что подключение по RDP Windows 2000 Professional не поддерживает... Видел такой базар на какомто из форумов, превратить Windows 2000 Server в Windows 2000 Professional для поддержки Remote Desktop, но это уже изврат
Здравствуйте, Macr0s, Вы писали:
M>А после отключния монитора таким способом (через вкладку "питание") не пробовал мышкой пошевелить? Фактически это одно и то же. Только делается как-то по-другому. Счас смотрел сообщения с помощью Spy++. Не смог отловить WM_SYSCOMMAND при автоматическом выключении монитора. Но при движении мышью он включался!
Да я согласен что SendMessage(Handle,WM_SYSCONNAND,SC_MONITORPOWER,2); выводит монитор в спящий режим подобным образом как и windows, возможно windows думает что сам вывел его в спящий режим и включает его при нажатии на клавиатуру или мышь, этот эфект как раз и надо обойти, надо потушить его НАМЕРТВО. Видел в инете что SendMessage(Handle,WM_SYSCONNAND,SC_MONITORPOWER,0); приводит к полному выключению монитора и включить его можно только перезагрузкой, но у меня это не сработало, и в мсдн описаны только LParam=1 и 2.
M>Требую сатисфакции!
Здравствуйте, deamon_tt, Вы писали:
_>Подскажите как сделать чтобы он гасился намертво.
Ну, если он загорается от движений мыши и клавы, то что мешает повесить глобальный хук на WH_KEYBOARD_LL и WH_MOUSE_LL и жрать мышино/клавишную активность на корню? А это не поможет, то выдавать SC_MONITORPOWER по движению мыши/клавиши?
__________
16.There is no cause so right that one cannot find a fool following it.
> На сайте микрософта написано что подключение по RDP Windows 2000 Professional не поддерживает... >
К сожелению из-за отсутствия оной винды проверить не могу, но на 99,9% уверен, что там это всё имеется!!!
Глянь есть ли там служба Терминалов (Terminal Services)!!!
> Видел такой базар на какомто из форумов, превратить Windows 2000 Server в > Windows 2000 Professional для поддержки Remote Desktop, но это уже изврат >
Тогда уж XP проще поставить!!!
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Покопался грязными руками в системе и уперся в прерывание 2Bh. Дальше стало влом копать, оно вызывается при любом WM_SYSCOMMAND вроде. Почему-то EAX постоянно=0. Если интересно, user32:text.77d494a4. Вот тут я остановился.
Перед тем, как улучшиться, ситуация ухудшается. (из законов Мерфи)
Здравствуйте, deamon_tt, Вы писали:
_>Привет всем. Вощем задача такая, написать программу которая программно выключает монитор, это необходимо для того чтобы когда я удаленно например RAdmin-ом чегото делаю, операторы не глазели. Вобщемто нашел такую команду SendMessage(Handle,WM_SYSCONNAND,SC_MONITORPOWER,2) монитор гаситься но при нажатии на клавишу или мышку он опять зажигаеться, т.е. чтото типа ждущего режима. Подскажите как сделать чтобы он гасился намертво.
Идея #1:
Создать тред, и в нем непрерывно гасить монитор. Или гасить если он не погашен, если это можно выяснить.
Идея #2:
Поковырять драйверы мыши и клавы. Или дисплея.
Идея #3:
Выставить видеорежим в заведомо не поддерживаемый дисплеем — если это не опасно.
Идея #4:
Поиграться c CreateDesktop/SetProcessWindowStation, если это то что надо...
Здравствуйте, Hydrogen, Вы писали:
H>Идея #1: H>Создать тред, и в нем непрерывно гасить монитор. Или гасить если он не погашен, если это можно выяснить.
Да это в принципе решает проблему, только мне кажеться это негативно отразиться на мониторе, т.е. когда он переходит в ждущий режим там обесточиваються большинство его деталей, а режим включения выключения для любой техники считаеться стрессовым. Хотя конечно может я тут и не прав, может это для такого режима продумано...
H>Идея #2: H>Поковырять драйверы мыши и клавы. Или дисплея.
Я нашел как вывести монитор в режим standby через 10h прерывание, http://olddos.narod.ru/doc/comp/bsp/v21/ch7.htm
теперь думаю как можно это использовать, это вроде надо через драйвер делать, токо чтото несовсем понятно как...Это прерывание из защищенного режима можно както вызвать?
H>Идея #3: H>Выставить видеорежим в заведомо не поддерживаемый дисплеем — если это не опасно.
В принципе можно дейтвительно в драйвере монитора выставить частоту развертки 160Hz тогда на большинстве мониторов будет гореть что частота превышена, но я когдато таким образом спалил монитор, т.е. то разрешение на котором я такой режим выствил больше не работало, так что это не подходит...
H>Идея #4: H>Поиграться c CreateDesktop/SetProcessWindowStation, если это то что надо...
Интересно... А можно пример реализации а то чтото не совсем понятно...