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

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

System date [D6, WinXP]


NorthMan ©   (2004-07-23 11:54:00) 

Программа висит круглосуточно и необходимо определять изменение даты. Есть ли в системе сообщение типа WM_TIMECHANGE?


y-soft   (2004-07-23 14:03:00) [1]

>NorthMan ©   (23.07.04 13:49) [4]

Правильно понимаете

Лучше вместо того, чтобы ждать, когда кто-то добренький может быть пошлет WM_TIMECHANGE (к тому же: где гарантия, что это произойдет именно при смене даты? :) ), запустить собственную ловушку.

Лучше всего использовать WaitableTimer, запущенный в отдельном потоке. Для этого таймера при запуске установить первое срабатывание на начало следующих суток, а период - 24 часа.
И ждать срабатывания с помощью WaitFotSingleObject...

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

Такая ловушка очень точна и практически не потребляет системных ресурсов...


Anatoly Podgoretsky   (2004-07-23 13:56:00) [2]

Есть такая щтука, называется таймер, можещь выбрать любой интервал и по срабатыванию проверяй на предмет изменения даты


NorthMan   (2004-07-23 13:49:00) [3]

Все это понятно, но дело в том, что моя программа должна пассивно "слушать" систему на предмет смены даты
WM_TIMECHANGE, а не менять ее. Как я понимаю, WM_TIMECHANGE возникает, когда какая-то программа меняет дату/время, а не сама система?


y-soft   (2004-07-23 12:08:00) [4]

WM_TIMECHANGE
An application sends the WM_TIMECHANGE message whenever it updates the system time.

To send this message, call the SendMessage function with the following parameters.

SendMessage(
 (HWND) hWnd,             // handle to destination window
 WM_TIMECHANGE,           // message to send
 (WPARAM) wParam,         // not used; must be zero
 (LPARAM) lParam          // not used; must be zero
);
Parameters
This message has no parameters.

Return Values
An application should return zero if it processes this message.

Remarks
To send this message to all top-level windows, an application can use the SendMessage function with the hWnd parameter set to HWND_TOPMOST.

Windows 2000/XP: An application should not broadcast this message, because the system will broadcast this message when the application changes the system time.

Windows NT 4.0 and earlier: An application should send this message to all top-level windows after changing the system time.

Windows 95/98/Me: An application should send this message to all top-level windows after changing the system time.

Requirements
 Windows NT/2000/XP: Included in Windows NT 3.1 and later.
 Windows 95/98/Me: Included in Windows 95 and later.
 Header: Declared in Winuser.h; include Windows.h.

See Also
Time Overview, Time Messages, SendMessage


NorthMan   (2004-07-23 12:05:00) [5]

Поделитесь...


Anatoly Podgoretsky   (2004-07-23 11:57:00) [6]

Есть


Наверх

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