S
Slava9371
Добрый вечер.
Возникла задача перехватить появление экранной заставки.
Нашел код:
но он не совсм подходит так как:
Windows посылает такое сообщение только текущему (top-level)
приложению.
И это можно решить с помощью SetWindowsHookEx()
Но в тоже время спокойно перехватил переход в спящий режим: вот таким кодом:
Предотвращать или запрещать показ заставки мне не нужно, надо только что-бы программа узнала о запуске заставки.
Вопрос: подскажите какой нибудь способ перехвата заставки, и можно ли обойтись без использования ловушки?
Заранее спасибо...
Возникла задача перехватить появление экранной заставки.
Нашел код:
Код:
procedure TForm1.ProcessMess(var msg: TMsg; var handled: boolean);
begin
if (msg.message=WM_SYSCOMMAND) and
(msg.wParam=SC_SCREENSAVE) then
handled:=true
else
handled:=false;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage:=ProcessMess;
end;
но он не совсм подходит так как:
Windows посылает такое сообщение только текущему (top-level)
приложению.
И это можно решить с помощью SetWindowsHookEx()
Но в тоже время спокойно перехватил переход в спящий режим: вот таким кодом:
Код:
procedure WMPowerBroadcast( var Message: TMessage); message WM_POWERBROADCAST;
procedure TForm1.WMPowerBroadcast(var Message: TMessage);
begin
ShowMessage('Sleep')
end;
Предотвращать или запрещать показ заставки мне не нужно, надо только что-бы программа узнала о запуске заставки.
Вопрос: подскажите какой нибудь способ перехвата заставки, и можно ли обойтись без использования ловушки?
Заранее спасибо...