Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2008.01.13;
Скачать: [xml.tar.bz2];

Вниз

Сообщение Windows о смене суток   Найти похожие ветки 

 
Jetus ©   (2007-06-11 12:24) [0]

Здравствуйте!

Как отловить момент смены суток в Windows?


 
Джо ©   (2007-06-11 12:58) [1]

Нету такого сообщения.


 
jetus ©   (2007-06-11 13:33) [2]

И что делать? Брать тупо в таймере проверять?


 
homm ©   (2007-06-11 13:33) [3]

> Как отловить момент смены суток в Windows?

В Windows сутки не меняются.


 
homm ©   (2007-06-11 13:35) [4]

> И что делать? Брать тупо в таймере проверять?

Один раз проверить и поставить таймер на нужное время — не сутьба?
Хотя трабла в том, что таймер вроде только на минуту поставить.
1) Проверяем время каждую минуту
2) если до смены суток времени больше минуты, делаем 1)
3) Ставим таймер на оставшееся время доконца той минуты, когда сутки истекут.

нужно еше каконить флаг наверное, в каком режиме таймер работает, минутном, или уже ждем непосредственно смены.


 
Джо ©   (2007-06-11 13:55) [5]

> [4] homm ©   (11.06.07 13:35)
> Хотя трабла в том, что таймер вроде только на минуту поставить.

Неправда.


 
homm ©   (2007-06-11 14:02) [6]

> [5] Джо ©   (11.06.07 13:55)
> Неправда.

Было правдой для win95 и VB5. Стех пор ни разу не понадобилось больше, так что текущее положение дел не знаю.


 
jetus ©   (2007-06-11 14:25) [7]

Изначально так и думал. просто решил - зачем париться если есть соответствующее сообщение.
Ну, раз нету, буду делать таймером.

Спасибо всем.


 
Eraser ©   (2007-06-11 14:43) [8]

> [6] homm ©   (11.06.07 14:02)


> Было правдой для win95 и VB5

Скорее всего только для VB5, хотя ни разу не работал с этим продуктом.
А насчет ограничения в win95 - гугл и msdn по этому поводу молчит, проверить пока что возможности нет, но на сколько помню - ограничений там не было, не считая конечно ограничения dword (около 40 суток).


 
DrPass ©   (2007-06-12 11:55) [9]


> А насчет ограничения в win95

Реальное разрешение таймера в win95 было около 50 мс, насколько я помню.


 
Eraser ©   (2007-06-12 13:00) [10]

> [9] DrPass ©   (12.06.07 11:55)

угу 55 по-моему, но тут речь про максимальный интервал, а не про дискретность.. вроде бы.


 
Углук ©   (2007-06-14 02:39) [11]

В сутках 86400000 миллисекунд.
Установить таймер на такой интервал.


 
KSergey ©   (2007-06-14 17:40) [12]

А прога точно в это время будет работать? Или реагировать надо только когда прога работает?
Ааа, календарь! :)


 
homm ©   (2007-06-14 17:47) [13]

> В сутках 86400000 миллисекунд.
> Установить таймер на такой интервал.

Угу, имеено так и нужно отлавливать момент смены суток в виндовс.
Сломаные часы тоже время иногда показывают правльно :)


 
Углук ©   (2007-06-15 02:04) [14]


> homm ©   (14.06.07 17:47) [13]

Таймер запустить в 00:00. Слабо?


 
Углук ©   (2007-06-15 02:10) [15]

Еще: подсчитать, сколько времени от запуска программмы пройдет до смены суток. Это нетрудно. Изменить интервал таймера. После первого срабатывания изменить интервал таймера на указанное мной число.


 
homm ©   (2007-06-15 10:20) [16]

> Таймер запустить в 00:00. Слабо?

Ага, когда я буду знать что сейчас 00:00, будет не слабо. Предлагаешь это дело на пользователя переложить?


> Еще: подсчитать, сколько времени от запуска программмы пройдет
> до смены суток.

Это как-то корелирует с тем, что было в [11] ??

сказал же чушь, еше доказывает, что прав.
-1 в общем.


 
tesseract ©   (2007-06-15 12:21) [17]


> В сутках 86400000 миллисекунд.Установить таймер на такой
> интервал.


погрешность таймера ужасная. Имейте в виду.


 
keymaster ©   (2007-06-15 12:24) [18]


> Углук ©   (15.06.07 02:10) [15]
>  После первого срабатывания изменить интервал таймера на
> указанное мной число.

При таком подходе программа должна работать сутки...


 
Anatoly Podgoretsky ©   (2007-06-15 13:36) [19]

> homm  (15.06.2007 10:20:16)  [16]

Программист в состояние пользоваться операциями сложения и вычитания!!!


 
Anatoly Podgoretsky ©   (2007-06-15 13:36) [20]

> keymaster  (15.06.2007 12:24:18)  [18]

Лучше несколько


 
Anatoly Podgoretsky ©   (2007-06-15 13:37) [21]

> tesseract  (15.06.2007 12:21:17)  [17]

Ну и что, нужна ли высокая точность для определения сего факта?


 
homm ©   (2007-06-15 13:40) [22]

> Программист в состояние пользоваться операциями сложения
> и вычитания!!!

Это к чему? Я в курсе таких операций, потому и предложил в [4] «Один раз проверить и поставить таймер на нужное время». А вот автор 11-го поста не в курсе.


 
Anatoly Podgoretsky ©   (2007-06-15 16:10) [23]

> homm  (15.06.2007 13:40:22)  [22]

Вроде бы это ты не можешь

> Ага, когда я буду знать что сейчас 00:00, будет не слабо. Предлагаешь это дело на пользователя переложить?


 
homm ©   (2007-06-15 16:45) [24]

> Вроде бы это ты не можешь

Это Вы привели мой ответ на реплику «Запускать в 00:00 слабо?». Тогда как Вам угодно. Человек скал чушь,а чего там имел ввиду, чего считать, чего не считать не мое дело.


 
Eraser ©   (2007-06-15 17:07) [25]

не стал бы я таймер подобным образом использовать..
если погрешность около минуты не старшна, проверял бы каждую минуту изменилась ли дата, если да - выполнить нужную операцию. т.о. можно учесть смену настроек времени.


 
WaitableTimer   (2007-06-15 18:24) [26]

Ребята, ну о чем тут такой долгий спор?
Разве никто не слышал о Waitable Timers?
Создал, установил на ближайшую полночь и не паришься, ждешь event"а...
(Работает, начиная с Windows 98 / NT 4.0 .)


 
Eraser ©   (2007-06-15 19:04) [27]

> [26] WaitableTimer   (15.06.07 18:24)

а если василий пупкин время поменял на компе, или в другой часовой пояс самолет улетел?


 
Anatoly Podgoretsky ©   (2007-06-15 19:08) [28]

> Eraser  (15.06.2007 17:07:25)  [25]

Без разницы какой интервал, нет никакой необходимости делать это каждую минуту, результат будет абсолютно одинаков.


 
WaitableTimer   (2007-06-15 19:15) [29]


> ... в другой часовой пояс самолет улетел?

Используется UTC-time.


> а если василий пупкин время поменял на компе...


Ничто не спасет кроме постоянного мониторинга. Можно хук на системный вызов поставить, но время можно и через BIOS поменять...

Думаю, это не та задача, решение которой было нужно вначале.
Вы предполагаете, что пользователь - преступник, и хотите это побороть.
Если да, то переформулируйте задачу.


 
Джо ©   (2007-06-16 03:05) [30]

> [29] WaitableTimer   (15.06.07 19:15)
> Вы предполагаете, что пользователь - преступник, и хотите
> это побороть.

Отчего же преступник? Он просто время поменял :)


 
Германн ©   (2007-06-16 03:33) [31]


> WaitableTimer   (15.06.07 19:15) [29]
>
...
> Думаю, это не та задача, решение которой было нужно вначале.
>

А, собс-но какая задача тут была озвучена?
Никакой задачи и не было!


 
WaitableTimer   (2007-06-16 10:32) [32]

Вопрос:

> Германн ©   (16.06.07 03:33) [31]
> А, собс-но какая задача тут была озвучена?
> Никакой задачи и не было!


Ответ:

> Jetus ©   (11.06.07 12:24)  
> Как отловить момент смены суток в Windows?


 
Anatoly Podgoretsky ©   (2007-06-16 12:16) [33]

> WaitableTimer  (16.06.2007 10:32:32)  [32]

А что такое смена суток?


 
Anatoly Podgoretsky ©   (2007-06-16 12:20) [34]


> Отчего же преступник? Он просто время поменял :)

Против подобных преступников есть WM_TIMECHANGE
А для обычных пользователей операция вычитания


 
WaitableTimer   (2007-06-16 14:58) [35]


> Anatoly Podgoretsky ©   (16.06.07 12:16) [33]
> А что такое смена суток?

Согласен, задача недостаточно формализована. Поэтому и ответил в рамках того, как понял.


 
Углук ©   (2007-06-17 16:24) [36]

2homm,
[I] скал чушь [/I]
Да не уж то?

Мой способ один раз вычисляет временную разницу, переводит в микросекунды, и преспокойно устанавливает её в интервал таймера- после запуска программы, - а после первого срабатывания OnTimer просто ставит число из [11]  для определения смены суток. До срабатывания таймера приложение висит себе в памяти, и никому( кроме настырных юзеров) не мешает, процессорных ресурсов не занимает.

Ваш  способ предполагает каждую минуту операции проверки времени.
Это значит, Вы не пытаетесь писать оптимальные программы, а пишете "в лоб". И поэтому мне как-то фиолетово, + или - Вы изволили присудить мне в качестве своей оценки


 
Eraser ©   (2007-06-17 17:22) [37]

> [36] Углук ©   (17.06.07 16:24)


> Ваш  способ предполагает каждую минуту операции проверки
> времени.
> Это значит, Вы не пытаетесь писать оптимальные программы,
> а пишете "в лоб".

ну ну..

нужно писАть так, чтобы надежно было, как AK47, проверка времени каждую минуту занимает настолько мизерное количесвто ресурсов, что его можно смело приравнять к 0.
А всякие фокусы с вычислением каких-то интервалов и перехватом WM_TIMECHANGE внисут неразбериху, в казалось бы, простейшую задачу..


 
Anatoly Podgoretsky ©   (2007-06-17 17:36) [38]

В зависимости от того, что такое сутки - WM_TIMECHANGE либо нужен, либо не нужен, и не зависит от метода.


 
Углук ©   (2007-06-17 18:08) [39]


> проверка времени каждую минуту занимает настолько мизерное
> количесвто ресурсов, что его можно смело приравнять к 0.
>

И все же займет... А  что касается

> фокусы с вычислением каких-то интервалов

Если для Вас это фокусы, тогда что же для Вас, скажем, преобразование Фурье? Китайская грамота?


 
Углук ©   (2007-06-17 18:10) [40]


>  неразбериху, в казалось бы, простейшую задачу..

Разберитесь...станете умнее



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

Форум: "WinAPI";
Текущий архив: 2008.01.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.54 MB
Время: 0.008 c
2-1197397963
dest81
2007-12-11 21:32
2008.01.13
Просмотр файлов


15-1197107513
Keg
2007-12-08 12:51
2008.01.13
Zip архив


8-1166004227
Николай_Москва
2006-12-13 13:03
2008.01.13
Разложить отрезок по цветам пикселей


2-1197411565
Koss
2007-12-12 01:19
2008.01.13
ServerSocket for LAzarus


6-1178348077
Анонимщики
2007-05-05 10:54
2008.01.13
Pipe, информация о клиенте





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский