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

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

КАК можно определить ;Изменение Системного времени


cdaDmitriy ©   (2002-05-01 14:45:00) 

О WM_TIMECHANGE можно не говорить Я знаю но Мне
НУЖНО НА СКОЛЬКО ИЗМЕНИЛОСЬ ВРЕМЯ

procedure WMTimeChange(var Message: TMessage); message WM_TIMECHANGE;

procedure TForm1.WMTimeChange(var Message: TMessage); begin
Inc(Count);
Label1.Caption:="Change Time "+IntTostr(Count);
Label2.Caption:=INTTOSTR(Message.WParam)+" "+INTTOSTR(Message.lParam);
inherited;
endж


Cobalt   (2002-05-07 05:41:00) [1]

Совершенно согласен с Набережных С. (05.05.02 18:15)
Запоминай GetTickCount и текущую дату при загрузке.
Когда ловишь WM_TIMECHANGE , сравнивай (разницу между GetTickCount и запомненым) и с разницей между текущей датой и запомненой (переводи в мс). Если разница >1 минуты, то это означает мухлёж.

А логер... А что логер? Почти то же самое.
Призагрузке <повтор>
Когда ловишь WM_TIMECHANGE, записываешь новое время(которое было установлено), и то, которое должно быть по твоим выкладкам(т.е. разница в TickCount переводится в сек/мин/часы/дни + сохраненная дата). Это все шифруется как-нить (чтоб в текстовом ред-ре не было видно), и говорится заказчику, что она, якобы, ведет запись результатов некоторых внутренних процессов.


cdaDmitriy   (2002-05-06 09:59:00) [2]

> leshy

Апликация очень большая ~ 100 окон и в каждом контролы

отследить события потери/получения фокуса сложно

кроме того Апликация работает не всегда

нужна маленькая прог, для логера изменения времени


leshy   (2002-05-06 09:35:00) [3]

Если пользователь меняет время вручную, то есть сам при помощи мышки, приложение будет терять фокус. Почему бы не использовать события потери/получения фокуса для запуска/остановки контроля времени?


cdaDmitriy   (2002-05-06 08:42:00) [4]

> anod ©

An application sends the WM_TIMECHANGE message to all top-level windows after changing the system time.

WM_TIMECHANGE
wParam = 0; // not used, must be zero
lParam = 0; // not used, must be zero


Вешать обработчик на Таймер не хотелось бы

Может есть еще что нибудь ????

ВОПРОС ОЧЕНЬ КРИТИЧЕН ЗАКАЗЧИК УТВЕРЖДАЕТ ЧТО НЕ МЕНЯЕТ
ВРЕМЯ А Я ДУМАЮ (САБОТАЖ)


Набережных С.   (2002-05-05 18:15:00) [5]

Видимо, можно при запуске программы делать:
TC:=GetTickCount;
Dt:=Now;
А при получении сообщения использовать их для вычисления изменения. Чтобы исключить возможность переполнения, можно обновлять переменные, скажем, каждые 10 часов, или 10 дней, или ...


anod   (2002-05-05 16:55:00) [6]

А что в wParam и lParam лежит?


cdaDmitriy   (2002-05-05 11:32:00) [7]

Может есть еще что нибудь ????


JC   (2002-05-02 16:15:00) [8]

Попробуй через каждое n-ное время(1 сек) получать текущее, а потом сравнивай если изменилось больше чем на n, то вычисляй
D= [текущее вр.]-[последнее запомненное]-n...


Dima-k17   (2002-05-02 12:56:00) [9]

Точно не понял, но по-моему здесь лежала информация о том, как из одного времени вычесть другое. Если ее найти, то придется постоянно мониторить проверяя текущее время. А после того, как произошло изменение поймать ставшее время и после этого из 1-го вычесть 2-е.


cdaDmitriy   (2002-05-02 11:17:00) [10]

An application sends the WM_TIMECHANGE message to all top-level windows after changing the system time.


Приложение посылает WM_TIMECHANGE сообщение всем окнам верхнего уровня после изменения(замены) системного времени.

Но это что прошло изменение А МНЕ НУЖНО НА СКОЛЬКО

Например было 10:23:34 юзер поменял на 11:23:34

Мне после изменения нужно получить D=1 час


Ka$per   (2002-05-02 10:07:00) [11]

вообще, вопрос не совсем понятен
попробуй так:

var d:TDateTime;
.....
d:=Now;
......
d:=Now-d;

d - разница между вызовами в сутках,
остается только перевести в минуты(секунды, и т.д.)


cdaDmitriy   (2002-05-02 08:46:00) [12]

?????


Наверх

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