Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

msg.result?


Jon ©   (2007-10-08 04:36:00) 

How to change the resultof a message?
I want to prevent standby or suspend while app is running.
Applet.OnMessage := TOnMessage(MakeMethod(nil,@AppMessage));
MSDN tells me that return value of message shoud be BROADCAST_QUERY_DENY
function AppMessage(Dummy: Pointer; var Msg: tagMSG; var Rslt: Integer): Boolean;
begin
 Result := False;
 case Msg.message of
   WM_POWERBROADCAST:
   begin
     case Msg.wParam of
       PBT_APMSUSPEND, PBT_APMSTANDBY:
       begin
         Msg.message := BROADCAST_QUERY_DENY;
//          Msg.Result := BROADCAST_QUERY_DENY;
         Result := True;
       end;
     end;
   end;
end;

Why can I not assign a msg.result?


Jon   (2007-10-08 17:08:00) [1]


> Rslt := BROADCAST_QUERY_DENY;


I need my eyes checked - thank you!


> PBT_APMQUERYSUSPEND, PBT_APMQUERYSTANDBY


Got it! I was incorrectly using PBT_APMSUSPEND and PBT_APMSTANDBY. Thanks!


fellix   (2007-10-08 15:58:00) [2]

> Jon ©   (08.10.07 04:36)  
> I want to prevent standby or suspend while app is running.


This works.

if (Msg.message = WM_POWERBROADCAST) and
  ((Msg.wParam = PBT_APMQUERYSUSPEND) or
   (Msg.wParam = PBT_APMQUERYSTANDBY))
then begin
 Rslt := BROADCAST_QUERY_DENY;
 Result := True;
end
else Result := False;


Note, that under Vista you have to enable corresponding group policy.


Vladimir Kladov   (2007-10-08 15:49:00) [3]

Rslt := BROADCAST_QUERY_DENY;


Jon   (2007-10-08 12:37:00) [4]

I know that OnClose handles application exit and that OnQueryEndSession handles shutdown/logoff, but neither handle standby/suspend (I have tried).

Thanks for the suggestion, but I really think that I need to handle the APM requests and to return BROADCAST_QUERY_DENY as described in MSDN - unfortunately there seems to be no KOL documentation on how to return message values :-(


thaddy   (2007-10-08 11:17:00) [5]

Use the OnClose and/or OnQueryEndSession events instead.
See kol.pas for good documentation.


Наверх

Титульная страница Поиск, карта сайта Написать письмо