Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сообщение при смене даты, Сообщение при смене даты 
:(
    Опции темы
andrey_pst
Дата 25.7.2005, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 37
Регистрация: 24.4.2003
Где: Пермь

Репутация: нет
Всего: 1



Подскажите рассылает ли Windows приложениям какое-нибудь сообщение при смене даты ? Если да, ток какое ?
PM MAIL   Вверх
Romikgy
Дата 25.7.2005, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Наверно нет, хотя я и не гуру smile

можно использовать таймер, и в нем проверять сменилась ли дата или нет smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Poseidon
Дата 25.7.2005, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 10
Всего: 133



Цитата(andrey_pst @ 25.7.2005, 11:14)
Подскажите рассылает ли Windows приложениям какое-нибудь сообщение при смене даты ? Если да, ток какое ?
Посылает.
Это сообщение WM_TIMECHANGE. Оно посылается всем окнам верхнего уровня и при смене даты, и при изменении времени.

Код
type  
 TForm1 = class(TForm)   
 
 private   
 
 { Private declarations }   
 
   procedure WMTIMECHANGE(var Message: TWMTIMECHANGE); message WM_TIMECHANGE;   
 
 public   
 
 { Public declarations }   
 
 end;   
 
  

var  
Form1: TForm1;  

implementation  

{$R *.DFM}  

procedure TForm1.WMTIMECHANGE(var Message: TWMTIMECHANGE);  
begin  
  Form1.Caption := 'Дата или время изменены';  
end; 



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Romikgy
Дата 26.7.2005, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Цитата(Poseidon @ 25.7.2005, 16:56)
при смене даты, и при изменении

при каком изменении, автоматическом (каждый час допустим) или когда юзверю системное время/дата не понравилось?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
andrey_pst
Дата 26.7.2005, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 37
Регистрация: 24.4.2003
Где: Пермь

Репутация: нет
Всего: 1



Цитата(Poseidon @ 25.7.2005, 16:56)
Посылает.
Это сообщение WM_TIMECHANGE. Оно посылается всем окнам верхнего уровня и при смене даты, и при изменении времени.

Этот вариант я уже пробовал.
Он срабатывает только тогда, когда пользователь руками меняет системные время/дату, мне же необходимо отслеживать естественный переход на новые сутки (один раз в сутки) - без ручных манипуляций.

Таймер пользовать по-моему как-то неправильно.

Это сообщение отредактировал(а) andrey_pst - 26.7.2005, 12:24
PM MAIL   Вверх
Romikgy
Дата 26.7.2005, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Цитата(andrey_pst @ 26.7.2005, 12:23)
Таймер пользовать по-моему как-то неправильно.


Это почему? smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Poseidon
Дата 26.7.2005, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 10
Всего: 133



Цитата(andrey_pst @ 26.7.2005, 12:23)
мне же необходимо отслеживать естественный переход на новые сутки (один раз в сутки) - без ручных манипуляций
Нужно же изьяснятся правильно. Что бы сразу понятно было.

Не, при нормальной (не искуственной) смене даты Винда вроде никакого сообщения не посылает. Хотя кто его знает smile
Используй таймер. Проверяй каждый час дату да и все. Большой нагрузки на систему это не окажет.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Петрович
Дата 2.8.2005, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: 15
Всего: 55



Цитата(Poseidon @ 26.7.2005, 17:30)
Не, при нормальной (не искуственной) смене даты Винда вроде никакого сообщения не посылает. Хотя кто его знает

Естественно нет. Дело в том, что по сути, дата ничем не отлчается от времени - это же тоже время. Более того, дата и время НЕРАЗРЫВНЫЕ понятия. А значит, всегда возникает вопрос "С каким интервалом посылать-то, через 1с, через 10ч, через 24ч, ...?"
Для этого-то и существуют таймеры. Смотриш сколько сейчас времени, вычисляеш сколько осталось до конца суток, и на этот интервал "заряжаешь" таймер.


--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
Snowy
Дата 2.8.2005, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Можно использовать WaitableTimer (CreateWaitableTimer, SetWaitableTimer)
Заряжаем в него текущую дату, время 00:00 и говорим "срабатывать каждые 24 часа".

PM MAIL   Вверх
Romikgy
Дата 2.8.2005, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



А я че говорил smile что юзай таймер smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Snowy
Дата 2.8.2005, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Только смысл немного другой.
Не проверять с интервалом, а не пора ли...
А просто выставляем таймер на нужное время и он сработает именно во время Ч.
Используя WaitableTimer можно вообще прекратить выполнение программы до наступления времени Ч. А при наступлении программа проснется и продолжит работу.
PM MAIL   Вверх
Romikgy
Дата 2.8.2005, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Ну какая разница, это же таймер!!!
Тот же эффект можно сделать и обычным, см. предложение
Петрович


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
FRAGNATIC
Дата 6.8.2005, 03:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: нет
Всего: 11



SetTimer()
KillTimer()
PM MAIL   Вверх
Dimannn
Дата 6.8.2005, 03:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 318
Регистрация: 14.4.2005
Где: Владимир

Репутация: нет
Всего: 1



В принципе, чтобы всё было по человечески, можно подумать насчёт
своей записи в Назначенных заданиях Windows.


--------------------
Хотите быстро и без проблем опубликовать вашу программу в сети за 5 минут?
Тогда потратьте пару минут чтобы посмотреть, что предлагает OpenProject.org.ru
PM MAIL ICQ   Вверх
FRAGNATIC
Дата 6.8.2005, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: нет
Всего: 11



Dimannn а разве поставить таймер это не по человечески?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0584 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.