Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как узнать, кто изменил системное время


Автор: v258 19.8.2011, 11:47
Пишу программу, которая мониторит изменение системной даты и восстанавливает ее. Изменение даты отслеживаю по сообщению WM_TIMECHANGE. Проблема в том, что программа реагирует в том числе на сообщения, которые сама же и посылает при восстановлении даты, выглядит это так
Код

20.08.2011 10:48:51 - Получено сообщение об изменении системного времени
19.08.2011 10:48:51 - Системная дата восстановлена успешно, текущая дата - 19.08.2011

19.08.2011 10:48:52 - Получено сообщение об изменении системного времени
19.08.2011 10:48:52 - Системная дата не изменилась, коррекция не требуется

15.08.2011 10:48:57 - Получено сообщение об изменении системного времени
19.08.2011 10:48:57 - Системная дата восстановлена успешно, текущая дата - 19.08.2011

19.08.2011 10:48:58 - Получено сообщение об изменении системного времени
19.08.2011 10:48:58 - Системная дата не изменилась, коррекция не требуется

Можно ли как-то определить, что данное сообщение было послано именно моей программой чтобы проигнорировать его? Или как еще можно это сделать?



Автор: v258 19.8.2011, 15:50
Сделал через глобальную переменную - в процедуре коррекции даты присваиваю ей True
Код

  CheckDate := True;

 а в процедуре обработки сообщения WM_TIMECHANGE проверяю состояние этой переменной
Код

  if CheckDate then
    begin
      CheckDate := False;
      Exit;
    end;

Трабл заключается в том, что это сообщение, оказывается, приходит дважды на каждое изменение даты. Блин, буду проверять на других компах 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)