Узнать, когда пользователь или программа изменили системное время - WM_TIMECHANGE
Основное различие между пользователя и хакером, взламывающим какую-либо систему это то, что действия пользователя непредсказуемы, и он действует на более широком фронте.
Когда меняется системное время всем окнам верхнего уровня рассылается сообщение WM_TIMECHANGE, нужен только обработчик этого сообщения.
unit Unit1;
interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
private{ Private declarations }{ Объявляем процедуру обработки сообщения }procedure WMTIMECHANGE(varmessage: TWMTIMECHANGE);
message WM_TIMECHANGE;
public{ Public declarations }end;
var
Form1: TForm1;
implementation{$R *.DFM}{ реализация процедуры обработки сообщения }procedure TForm1.WMTIMECHANGE(varmessage: TWMTIMECHANGE);
begin{например, по возникновению события уведомим об этом пользователя,
отобразив в заголовке окна соответствующую надпись}
Form1.Caption := 'Time has changed';
end;
end.
Программный код на Delphi демонстрирует, как обрабатывать сообщение WM_ TIMECHANGE в приложении Windows. Сообщение WM_TIMECHANGE отправляется всем верхним окнам при изменении системного времени.
Вот разбивка кода:
Определен класс TForm1, который наследуется от TForm. Этот класс представляет основное окно приложения.
Приватная процедура WMTIMECHANGE объявлена, которая будет обрабатывать сообщение WM_TIMECHANGE. Эта процедура принимает переменную TWMTIMECHANGE в качестве входного параметра, содержащую информацию о событии изменения времени.
Строка message WM_ TIMECHANGE; указывает, что это класс обрабатывает сообщение WM_TIMECHANGE.
В разделе реализации процедура WMTIMECHANGE определяется. Когда эта процедура вызывается, она обновляет заголовок формы, чтобы указать, что системное время было изменено.
Для использования этого кода:
Создайте новый проект Delphi и добавьте форму к нему.
Нажмите на компонент таймер (Timer1) на форме.
В обработчике события FormCreate установите свойство Interval Timer1 в 0, чтобы таймер запустился сразу после создания формы.
Скомпилируйте и запустите приложение.
Когда вы измените системное время (например, установив его обратно на час назад с помощью свойства Дата/Время в Windows), заголовок формы обновится, чтобы указать, что время было изменено.
В статье описывается способ обнаружения изменения системного времени на компьютере через событие WM_TIMECHANGE в Windows и реализация обработчика этого события в Delphi.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.