Перехват Заставки

  • Автор темы Автор темы Slava9371
  • Дата начала Дата начала
S

Slava9371

Добрый вечер.
Возникла задача перехватить появление экранной заставки.
Нашел код:

Код:
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;

Предотвращать или запрещать показ заставки мне не нужно, надо только что-бы программа узнала о запуске заставки.

Вопрос: подскажите какой нибудь способ перехвата заставки, и можно ли обойтись без использования ловушки?
Заранее спасибо...
 
Неужели ни кто не сталкивался с такой проблемой?
 
Разобрался!
Проблему решил таким вот на мой взгляд шаманским) способом:

Код:
var
ScreenSaverActive: Bool;
Check : byte;

procedure TForm1.FormCreate(Sender: TObject);
begin
ScreenSaverActive := False;
Check := 0;
end;

procedure TForm1.Timer1Timer(Sender: TObject);

begin
SystemParametersInfo(SPI_GETSCREENSAVERRUNNING, 0, @ScreenSaverActive, 0);
if (Check = 0) and (ScreenSaverActive = true) then begin
Check := 1; 
//если заставка запущенна
end;
if (Check = 1) and (ScreenSaverActive = False) then begin
Check := 2; 
//если заставка отключается
end
end;

Тема закрыта!
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab