Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Как отменить переход системы в спящий режим?

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
pa_han87



Зарегистрирован: 14.04.2006
Сообщения: 19

СообщениеДобавлено: Чт Июн 12 2008 16:31    Заголовок сообщения: Как отменить переход системы в спящий режим? Ответить с цитатой

При переходе в спящий режим может возникать событие PBT_APMQUERYSUSPEND, когда система запрашивает от работающиюх приложений разрешение на переход в спящий режим. В MSDN написано, что возвращая BROADCAST_QUERY_DENY, можно предотвратить переход в спящий режим. Я пишу:
Код:

DWORD __fastcall TMainForm::OnPowerBroadcast(TMessage& Message){

 static bool DenySuspend=false;

 switch (Message.WParam){
...
  case PBT_APMQUERYSUSPEND: MessageBeep(MB_ICONQUESTION);
                            if (Application->MessageBox("Перейти в спящий режим?", Caption, MB_YESNO + MB_ICONQUESTION)==IDYES){
//Здесь завершение работы приложения
                            }
                            else
                             DenySuspend=true;
                            break;
...
 }
 if (DenySuspend) return BROADCAST_QUERY_DENY;
}

Если я выбираю в диалоге "No", система все равно уходит в спящий режим.
Кто-нибудь работал с этим? Можете подсказать, ошибка у меня в коде или в том, как я пытаюсь его отладить (через Пуск->Завершение работы->StandBy; в MSDN про событие PBT_APMQUERYSUSPEND написано, что у него есть параметр, определяющий, может ли приложение спрашивать юзера о необходимых действиях или система полюбому уйдет в спящий режим - я еще не проверял, во что его выставляет Винда)?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
NetFantom



Зарегистрирован: 27.01.2004
Сообщения: 41
Откуда: Санкт-Петербург

СообщениеДобавлено: Пт Июн 13 2008 04:19    Заголовок сообщения: Ответить с цитатой

А брекпоинт устанавливать пробовал? В эту функцию приходит вообще при попытке переходя в спящий режим?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
pa_han87



Зарегистрирован: 14.04.2006
Сообщения: 19

СообщениеДобавлено: Сб Июн 14 2008 16:06    Заголовок сообщения: Ответить с цитатой

Входит, входит... на остальные сообщения-то реагирует.
Вообще, я уже сам разобрался: никакого return`а не надо, в VCL если в ответ на message надо возвращать значение, оно помещается прямо в поле Result структуры TMessage. В общем, если кому пригодиться, правильно так:
Код:

void __fastcall TMainForm::OnPowerBroadcast(TMessage& Message){

 switch (Message.WParam){
...
  case PBT_APMQUERYSUSPEND: MessageBeep(MB_ICONQUESTION);
                            if (Application->MessageBox("Перейти в спящий режим?", Caption, MB_YESNO + MB_ICONQUESTION)==IDYES){
//Здесь завершение работы приложения
                               Message.Result=TRUE;
                            }
                            else
                             Message.Result=BROADCAST_QUERY_DENY;
                            break;
...
 }
}

+ Таймер, корректно завершающий прогу, даже если юзер MessageBox не увидит.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
NetFantom



Зарегистрирован: 27.01.2004
Сообщения: 41
Откуда: Санкт-Петербург

СообщениеДобавлено: Пн Июн 16 2008 15:54    Заголовок сообщения: Ответить с цитатой

Вот и меня return в функции обработки события смутил
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...