Blog. Just Blog

Отслеживание изменения системного времени

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Образ мышления: Assembler | Автор: ManHunter
Отслеживание изменения системного времени
Отслеживание изменения системного времени

Если ваша программа работает с системным временем, то хорошей практикой будет возможность отслеживать факт его изменения. Это может быть как ручное изменение настроек даты и времени через Панель управления, так и программное изменение времени функциями типа SetSystemTime или SetLocalTime, сути не меняет. Соответственно, при наступлении такого события ваша программа должна переустановить какие-то свои внутренние таймеры, проконтролировать и пересчитать интервалы между процессами и т.п.

Задача облегчается тем фактом, что при каждом изменении времени система отправляет всем окнам верхнего уровня сообщение WM_TIMECHANGE. Нам остается только добавить его обработку в процедуру главного окна.
  1.         ; Системное время изменилось
  2.         cmp     [msg],WM_TIMECHANGE
  3.         je      wmtimechange
  4.         ...
  5.         ...
  6. wmtimechange:
  7.         ; Выполнить нужные действия
  8.         ...
  9.         jmp     processed
Если требуется узнать на сколько изменилось системное время, надо в своей программе по таймеру сохранять текущее системное время, а при поступлении сообщения WM_TIMECHANGE получить новое время и вычислить разницу.

В приложении пример программы, которая отслеживает изменение системного времени и показывает сохраненное и новое установленное время.

Пример программы с исходным текстом (FASM)Пример программы с исходным текстом (FASM)

WM_TIMECHANGE.Demo.zip (2,259 bytes)


Поделиться ссылкой ВКонтакте Поделиться ссылкой на Facebook Поделиться ссылкой на LiveJournal Поделиться ссылкой в Мой Круг Добавить в Мой мир Добавить на ЛиРу (Liveinternet) Добавить в закладки Memori Добавить в закладки Google
Просмотров: 440 | Комментариев: 0

Комментарии

Отзывы посетителей сайта о статье
Комментариeв нет

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2020
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.004 сек.) / Память: 5 Mb
Наверх