Форум — Ответы     (  К темам )
 ?  Георгий: аналог ScreenSaver в Explorer (04-04-2003 14:00:30)
Хочу сделать, чтоб при отсутствии действий пользователя "вырубался" монитор
1. как отслеживать факт нажатия клавиш на клавиатуре/мышке
2. как отслеживать факт передвижения мыши
3. как "вырубить" монитор вроде нашёл:
SendMessage(Application->Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 1);

жду предложений по пунктам 1,2 и советов по 3-му.
 Павел (05-04-2003 14:15:07)
А не проще использовать для этого стандартный ScreenSaver ?
Установите нужное время, через сколько он будет вырубаться и все,
зачем усложнять ?
 Георгий (05-04-2003 15:27:16)
моя прога является Shell заменителем и программа explorer, которая и загружает ScreenSaver, не запускается.
 Alexander (07-04-2003 11:17:09)
Ну а в чем проблема-то ?
Вешаешь обработчики на все, что у тебя является событием пробуждения / отсрочки включения screensaver'а и сбрасываешь там таймер / выключаешь saver, если включен.
В обработчике же события Application->OnIdle смотришь, сколько у тебя не трогали клаву...
При этом, естественно, ты должен быть самым верхним переватчиком сообщений клавиатуры и мыши. Это самое сложное, но это должно как-то делаться
 Георгий (07-04-2003 19:14:11)
OnIdle — не подходит — у меня другие потоки всё машинное время занимают
предлагаете на 30 форм + несколько динамически генерируемых повесить обработчики OnKeyDown и OnMouseMove — выглядит не очень продуктивно
 Alexander (08-04-2003 11:57:22)
Нет, я предлагаю перехватывать уровнем выше. У шелла наверняка есть такая возможность.
Если у тебя нету воможности быть в OnIdle (что вообще-то очень странно), то ставь таймер и добавляй в него по событию мышь и клавиатуры. Кстати, насчет OnMouseMove — по-моему, есть низкоуровневый интерфейс к мыши насчет количества перемещений... (т.е. пройденный путь :).
А как, интересно, это делает шелл, если не обрабатывает OnMouseMove ? Явно обрабатывает, и ничего, не тормозит :) Значит, можно так сделать.
 Георгий (08-04-2003 12:13:01)
вот и меня интересует КАК перехватывать уровнем выше.