Форум: "WinAPI";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.026 c