Программка занимается вычислениями. Подскажите пожалуйста как ей не дать ОС отправить комп в ждущий / спящий режим? Как-то это тот же медиаплеер ведь делает.
Здравствуйте, wonderboy, Вы писали:
W>Приветствую!
W>Программка занимается вычислениями. Подскажите пожалуйста как ей не дать ОС отправить комп в ждущий / спящий режим? Как-то это тот же медиаплеер ведь делает.
Здравствуйте, wonderboy, Вы писали:
W>Программка занимается вычислениями. Подскажите пожалуйста как ей не дать ОС отправить комп в ждущий / спящий режим? Как-то это тот же медиаплеер ведь делает.
Убивал бы, кстати, авторов таких программок. Включая автора медиаплеера.
Здравствуйте, Pzz, Вы писали:
Pzz>Здравствуйте, wonderboy, Вы писали:
W>>Программка занимается вычислениями. Подскажите пожалуйста как ей не дать ОС отправить комп в ждущий / спящий режим? Как-то это тот же медиаплеер ведь делает.
Pzz>Убивал бы, кстати, авторов таких программок. Включая автора медиаплеера.
Здравствуйте, K13, Вы писали:
W>>А в чем проблема? K13>возможно, заглянул электрик и сказал "через 5 минут отключаем этаж часа на 2-3". K13>возможно, пропал свет и упс дает команду на гибернейт. K13>нахрена блокировать? и в чем плюсы от блокировки? проснется -- продолжит.
Возможно меня не правильно поняли.
Предположим винда автоматически после 30 мин бездействия юзера уводит комп в ждущий режим или в гибернейт. Смотрите вы кино, клаву/мышу не трогаете — и на тебе, через пол часа кино завершается.
То же самое в моем случае — когда расчет я запустил, то не хотел бы чтобы его принудительно остановили, тем более что в это время используются сетевые соединения, которые я так полагаю порвутся (программа распределенные вычисления организует). Можно конечно вручную настройку ухода в ждущий/спящий режим менять, но не будешь же это делать перед каждым запуском..
Re: Не дать уйти в ждущий / спящий режим
От:
Аноним
Дата:
30.08.10 06:58
Оценка:
Периодически (по таймеру, или еще как-нибудь) генерируй безобидное событие клавиатуры
keybd_event(VK_F24, 0, KEYEVENTF_KEYUP | KEYEVENTF_SILENT, 0);
Здравствуйте, wonderboy, Вы писали:
W>Приветствую!
W>Программка занимается вычислениями. Подскажите пожалуйста как ей не дать ОС отправить комп в ждущий / спящий режим? Как-то это тот же медиаплеер ведь делает.
SetThreadExecutionState Function
Enables applications to inform the system that it is in use, thereby preventing the system from entering the sleeping power state or turning off the display while the application is running.
2Pzz — ничего криминального я в этом вызове не вижу. Просто надо применять его там, где надо и не применять — где не надо.
А>Периодически (по таймеру, или еще как-нибудь) генерируй безобидное событие клавиатуры А>keybd_event(VK_F24, 0, KEYEVENTF_KEYUP | KEYEVENTF_SILENT, 0);
А потом у юзера периодически будут "пропадать" нажатые клавиши.
А если это будет какой нибудь неуравновешенный любитель стрелялок, то он ведь и найти вас может, если поймет в чем дело
Как много веселых ребят, и все делают велосипед...
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>2Pzz — ничего криминального я в этом вызове не вижу. Просто надо применять его там, где надо и не применять — где не надо.
Я могу отнестись с некоторым пониманием к тому, что программа, которая пишет на DVD-болванку, не дает системе заснуть, пока не допишет. Но когда рассчетная программа или кено не дают заснуть лабтопу, у которого закрыли крышку, таких программеров надо отстреливать пока они еще маленькие и не доросли до начальской должности. Да-да, я знаю, венда мне скажет, почему она не может заснуть. Прямо под закрытой крышкой нарисует окошко и туда все скажет
Здравствуйте, Pzz, Вы писали:
Pzz>Я могу отнестись с некоторым пониманием к тому, что программа, которая пишет на DVD-болванку, не дает системе заснуть, пока не допишет. Но когда рассчетная программа или кено не дают заснуть лабтопу, у которого закрыли крышку, таких программеров надо отстреливать пока они еще маленькие и не доросли до начальской должности. Да-да, я знаю, венда мне скажет, почему она не может заснуть. Прямо под закрытой крышкой нарисует окошко и туда все скажет
А чуть поспокойнее можно ?
Во-первых, при чем тут лаптоп ? Не помню, чтобы ТС его упомянул. Кстати, если уж на то пошло, можно, наверное, проверить, лаптоп или нет (как именно — не знаю, не интересовался)
Во-вторых, если я запускаю именно рассчетную программу, которой (я это знаю) считать надо 5 часов, то почему бы мне и не отключить на это время способность системы засыпать ? Между прочим, эта способность у нее не сразу появилась — не помню, начиная с какой версии Windows.
А в третьих, если уж на то пошло, то эта программа может вывести при старте сообщение, о том, что она собирается делать. На понятном юзеру языке. С возможностью не показывать это сообщение в следующий раз. А дальше будет как при установке апдейтов Windows — просим не отключать компьютер (и не закрывать крышку
Здравствуйте, wonderboy, Вы писали:
W>Предположим винда автоматически после 30 мин бездействия юзера уводит комп в ждущий режим или в гибернейт. Смотрите вы кино, клаву/мышу не трогаете — и на тебе, через пол часа кино завершается.
Если в венде возможно прочитать эти настройки, я бы их прочитал, и выкинул пользователю предупреждение. Возможно с предложением поставить галку, запрещающую сон. Но навязывать такую "услугу" — дурной тон.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>SetThreadExecutionState Function
Ну кстати, ES_USER_PRESENT вроде как отменяет всякие там скринсейверы и прочие понижения частоты процессора но при этом, если верить описанию (я бы проверил), не мешает усыплению компутера, если юзер это явно попросил (путем закрытия крышки, например)
Здравствуйте, Pzz, Вы писали:
Pzz>Ну кстати, ES_USER_PRESENT вроде как отменяет всякие там скринсейверы и прочие понижения частоты процессора но при этом, если верить описанию (я бы проверил), не мешает усыплению компутера, если юзер это явно попросил (путем закрытия крышки, например)
Так ТС же надо наоборот, не усыплять, без участия юзера.
Здравствуйте, Pavel Dvorkin, Вы писали:
Pzz>>Ну кстати, ES_USER_PRESENT вроде как отменяет всякие там скринсейверы и прочие понижения частоты процессора но при этом, если верить описанию (я бы проверил), не мешает усыплению компутера, если юзер это явно попросил (путем закрытия крышки, например)
PD>Так ТС же надо наоборот, не усыплять, без участия юзера.
Ну? По описанию получается то, что надо: само собой усыпляться не будет, а по явному запросу таки будет.
Не надо отламывать у пользователя возможность сделать какое-то действие явно, даже если оно кажется автору программы глупым: существует ненулевая вероятность, что автор программы глупее юзера.
Здравствуйте, Pzz, Вы писали:
Pzz>Здравствуйте, wonderboy, Вы писали:
W>>Предположим винда автоматически после 30 мин бездействия юзера уводит комп в ждущий режим или в гибернейт. Смотрите вы кино, клаву/мышу не трогаете — и на тебе, через пол часа кино завершается. Pzz>Если в венде возможно прочитать эти настройки, я бы их прочитал, и выкинул пользователю предупреждение. Возможно с предложением поставить галку, запрещающую сон. Но навязывать такую "услугу" — дурной тон.
С вами согласен.
Но я не думаю что вызов SetThreadExecutionState с ES_SYSTEM_REQUIRED | ES_CONTINUOUS запретит напроч уход в спящий режим, если этого юзер сам попросит. По описанию я так понял, что работа функции касается только автоматического ухода в спящий режим после периода "неактивности" пользователя. Сегодня проверю..
Здравствуйте, Pzz, Вы писали:
Pzz>Здравствуйте, Pavel Dvorkin, Вы писали:
Pzz>>>Ну кстати, ES_USER_PRESENT вроде как отменяет всякие там скринсейверы и прочие понижения частоты процессора но при этом, если верить описанию (я бы проверил), не мешает усыплению компутера, если юзер это явно попросил (путем закрытия крышки, например)
PD>>Так ТС же надо наоборот, не усыплять, без участия юзера.
Pzz>Ну? По описанию получается то, что надо: само собой усыпляться не будет, а по явному запросу таки будет.
Похоже, вообще не будет.
ES_USER_PRESENT
0x00000004 This value is not supported. If ES_USER_PRESENT is combined with other esFlags values, the call will fail and none of the specified states will be set.
Windows Server 2003 and Windows XP/2000: Informs the system that a user is present and resets the display and system idle timers. ES_USER_PRESENT must be called with ES_CONTINUOUS.
Кстати , в локальном MSDN от VS2008 его нет вообще.
Pzz>Не надо отламывать у пользователя возможность сделать какое-то действие явно, даже если оно кажется автору программы глупым: существует ненулевая вероятность, что автор программы глупее юзера.