Как програмно выключить монитор
От: deamon_tt  
Дата: 30.08.05 16:19
Оценка:
Привет всем. Вощем задача такая, написать программу которая программно выключает монитор, это необходимо для того чтобы когда я удаленно например RAdmin-ом чегото делаю, операторы не глазели. Вобщемто нашел такую команду SendMessage(Handle,WM_SYSCONNAND,SC_MONITORPOWER,2) монитор гаситься но при нажатии на клавишу или мышку он опять зажигаеться, т.е. чтото типа ждущего режима. Подскажите как сделать чтобы он гасился намертво.

Заранее большое спасибо за ответы.
Re: Как програмно выключить монитор
От: Macr0s Россия  
Дата: 31.08.05 06:41
Оценка:
Здравствуйте, deamon_tt, Вы писали:

_>Привет всем. Вощем задача такая, написать программу которая программно выключает монитор, это необходимо для того чтобы когда я удаленно например RAdmin-ом чегото делаю, операторы не глазели. Вобщемто нашел такую команду SendMessage(Handle,WM_SYSCONNAND,SC_MONITORPOWER,2) монитор гаситься но при нажатии на клавишу или мышку он опять зажигаеться, т.е. чтото типа ждущего режима. Подскажите как сделать чтобы он гасился намертво.


_>Заранее большое спасибо за ответы.


Имхо вопрос похож на "как программно переключить канал телефизора в комнате соведа"
Перед тем, как улучшиться, ситуация ухудшается. (из законов Мерфи)
Re: Как програмно выключить монитор
От: Ignoramus  
Дата: 31.08.05 06:45
Оценка:
Здравствуйте, deamon_tt, Вы писали:

_>Привет всем. Вощем задача такая, написать программу которая программно выключает монитор, это необходимо для того чтобы когда я удаленно например RAdmin-ом чегото делаю, операторы не глазели. Вобщемто нашел такую команду SendMessage(Handle,WM_SYSCONNAND,SC_MONITORPOWER,2) монитор гаситься но при нажатии на клавишу или мышку он опять зажигаеться, т.е. чтото типа ждущего режима. Подскажите как сделать чтобы он гасился намертво.


_>Заранее большое спасибо за ответы.


Интересно какой монитор в данном случае гасится по SC_MONITORPOWER
Re[2]: Как програмно выключить монитор
От: deamon_tt  
Дата: 31.08.05 16:35
Оценка:
Здравствуйте, Macr0s, Вы писали:

M>Имхо вопрос похож на "как программно переключить канал телефизора в комнате соведа"


В настройках экрана-питание есть вкладка, через сколько времени включать монитор в энергосберегающий режим, фактически это есть его отключение. Так что твое имхо!!! ... лана проехали
Re: Как програмно выключить монитор
От: Stanky  
Дата: 31.08.05 19:07
Оценка:
> это необходимо для того чтобы когда я удаленно например RAdmin-ом чегото делаю, операторы не глазели.
>
А не лучше ль RDP? Всё, что будут видеть операторы — предложение на вход?
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Re[2]: Как програмно выключить монитор
От: deamon_tt  
Дата: 31.08.05 19:55
Оценка:
Здравствуйте, Stanky, Вы писали:

S>А не лучше ль RDP? Всё, что будут видеть операторы — предложение на вход?


Насколько я знаю RDP есть только начиная с XP и в серверных ос, у операторов 2000, поэтому к сожалению такой вариант не подходит.
Re[3]: Как програмно выключить монитор
От: Stanky  
Дата: 31.08.05 20:25
Оценка:
> у операторов 2000, поэтому к сожалению такой вариант не подходит.
>
Там он тоже есть!!!
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Re: Как програмно выключить монитор
От: red_cap Россия  
Дата: 01.09.05 06:29
Оценка: :)
Здравствуйте, deamon_tt, Вы писали:

_>Привет всем. Вощем задача такая, написать программу которая программно выключает монитор, это необходимо для того чтобы когда я удаленно например RAdmin-ом чегото делаю, операторы не глазели. Вобщемто нашел такую команду SendMessage(Handle,WM_SYSCONNAND,SC_MONITORPOWER,2) монитор гаситься но при нажатии на клавишу или мышку он опять зажигаеться, т.е. чтото типа ждущего режима. Подскажите как сделать чтобы он гасился намертво.


_>Заранее большое спасибо за ответы.


Как программно нажать кнопку питания на мониторе?
Re[3]: Как програмно выключить монитор
От: Macr0s Россия  
Дата: 01.09.05 07:19
Оценка:
Здравствуйте, deamon_tt, Вы писали:

_>В настройках экрана-питание есть вкладка, через сколько времени включать монитор в энергосберегающий режим, фактически это есть его отключение.


А после отключния монитора таким способом (через вкладку "питание") не пробовал мышкой пошевелить? Фактически это одно и то же. Только делается как-то по-другому. Счас смотрел сообщения с помощью Spy++. Не смог отловить WM_SYSCOMMAND при автоматическом выключении монитора. Но при движении мышью он включался!

Требую сатисфакции!
Перед тем, как улучшиться, ситуация ухудшается. (из законов Мерфи)
Re[4]: Как програмно выключить монитор
От: deamon_tt  
Дата: 01.09.05 09:27
Оценка:
Здравствуйте, Stanky, Вы писали:

S>Там он тоже есть!!!


А можно поподробнее? На сайте микрософта написано что подключение по RDP Windows 2000 Professional не поддерживает... Видел такой базар на какомто из форумов, превратить Windows 2000 Server в Windows 2000 Professional для поддержки Remote Desktop, но это уже изврат
Re[4]: Как програмно выключить монитор
От: deamon_tt  
Дата: 01.09.05 09:40
Оценка:
Здравствуйте, 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>Требую сатисфакции!

Re: Как програмно выключить монитор
От: 0xDEADBEEF Ниоткуда  
Дата: 01.09.05 16:27
Оценка: +1
Здравствуйте, 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.
Re[5]: Как програмно выключить монитор
От: Stanky  
Дата: 02.09.05 03:56
Оценка:
> На сайте микрософта написано что подключение по RDP Windows 2000 Professional не поддерживает...
>
К сожелению из-за отсутствия оной винды проверить не могу, но на 99,9% уверен, что там это всё имеется!!!
Глянь есть ли там служба Терминалов (Terminal Services)!!!

> Видел такой базар на какомто из форумов, превратить Windows 2000 Server в

> Windows 2000 Professional для поддержки Remote Desktop, но это уже изврат
>
Тогда уж XP проще поставить!!!
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Re[6]: Как програмно выключить монитор
От: Аноним  
Дата: 02.09.05 04:59
Оценка:
Здравствуйте, Stanky, Вы писали:

http://www.sadikhov.com/forum/Terminal-Service-In-Win2k-Professional_5074.html
Re[7]: Как програмно выключить монитор
От: Stanky  
Дата: 02.09.05 05:06
Оценка:
> http://www.sadikhov.com/forum/Terminal-Service-In-Win2k-Professional_5074.html
>
Ну что ж, тогда либо ставь XP (тоже мне совет, либо ищи терминальный сервер/клиент других производителей (они есть), либо извращайся с монитором (это не решение)!!!
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Re[8]: Как програмно выключить монитор
От: Macr0s Россия  
Дата: 02.09.05 09:24
Оценка:
Покопался грязными руками в системе и уперся в прерывание 2Bh. Дальше стало влом копать, оно вызывается при любом WM_SYSCOMMAND вроде. Почему-то EAX постоянно=0. Если интересно, user32:text.77d494a4. Вот тут я остановился.
Перед тем, как улучшиться, ситуация ухудшается. (из законов Мерфи)
Re: Как програмно выключить монитор
От: Hydrogen  
Дата: 03.09.05 08:25
Оценка:
Здравствуйте, deamon_tt, Вы писали:

_>Привет всем. Вощем задача такая, написать программу которая программно выключает монитор, это необходимо для того чтобы когда я удаленно например RAdmin-ом чегото делаю, операторы не глазели. Вобщемто нашел такую команду SendMessage(Handle,WM_SYSCONNAND,SC_MONITORPOWER,2) монитор гаситься но при нажатии на клавишу или мышку он опять зажигаеться, т.е. чтото типа ждущего режима. Подскажите как сделать чтобы он гасился намертво.

Идея #1:
Создать тред, и в нем непрерывно гасить монитор. Или гасить если он не погашен, если это можно выяснить.
Идея #2:
Поковырять драйверы мыши и клавы. Или дисплея.
Идея #3:
Выставить видеорежим в заведомо не поддерживаемый дисплеем — если это не опасно.
Идея #4:
Поиграться c CreateDesktop/SetProcessWindowStation, если это то что надо...
... << RSDN@Home 1.1.3 stable >>
Re[2]: Как програмно выключить монитор
От: srggal Украина  
Дата: 03.09.05 15:50
Оценка:
Здравствуйте, red_cap, Вы писали:


_>Как программно нажать кнопку питания на мониторе?


Корпус ATX ????
... << RSDN@Home 1.1.4 stable rev. 510>>
Re[2]: Как програмно выключить монитор
От: deamon_tt  
Дата: 03.09.05 17:25
Оценка:
Здравствуйте, 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, если это то что надо...

Интересно... А можно пример реализации а то чтото не совсем понятно...

Спасибо за ответ...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.