Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.05;
Скачать: CL | DM;

Вниз

System date   Найти похожие ветки 

 
NorthMan ©   (2004-07-23 11:54) [0]

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


 
Anatoly Podgoretsky ©   (2004-07-23 11:57) [1]

Есть


 
NorthMan ©   (2004-07-23 12:05) [2]

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


 
y-soft ©   (2004-07-23 12:08) [3]

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 13:49) [4]

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


 
Anatoly Podgoretsky ©   (2004-07-23 13:56) [5]

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


 
y-soft ©   (2004-07-23 14:03) [6]

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

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

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

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

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

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



Страницы: 1 вся ветка

Текущий архив: 2004.09.05;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.047 c
1-1093033660
HydraMarat
2004-08-21 00:27
2004.09.05
Поток загружает процессор на 100%


3-1092330335
сергей1
2004-08-12 21:05
2004.09.05
drop table


4-1090478771
SPeller
2004-07-22 10:46
2004.09.05
Стандартные размеры шрифтов


3-1092116802
Faeton08
2004-08-10 09:46
2004.09.05
Номер по порядку


1-1092834830
Phoenix
2004-08-18 17:13
2004.09.05
Индивидуальные иконки в TreeView