Вниз
Скачать: CL | DM;

Системное время   Найти похожие ветки 

 
Clift ©   (2003-12-14 00:27) [0]

При определённых настройках действия которые выполняет програма полностью зависят от Timer
Как на время работы программы запретить пользователю
изменять системное время.
p.s. Подозреваю что это нужно реализовать через API но в соответствующем форуме "тишина", подскажите
с помощью какой функции это можно выполнить.


 
Clift ©   (2003-12-14 02:39) [1]

?


 
REA ©   (2003-12-14 10:38) [2]

Да пожалуй никак. Можно это наверно отловить и попросить так не делать. В принципе он имеет право время поменять.


 
Clift ©   (2003-12-15 15:58) [3]

>REA ©
Я же несобираюсь лишать возможности изменять таймер навсегда, а лишь на время работы программы.


 
cpp   (2003-12-15 16:02) [4]

Создать Hook на процедуры API, при помощи которых осуществляется изменение времени. Мы перехватим обращение к этой процедуры, и взависимости от желания, может выполнить её или нет.
Я не знаю какую функцию нужно перехватить - я предлагаю идею в каком напррравлении двигаться


 
clift ©   (2003-12-15 16:04) [5]

>cpp
Ну напровление и я знаю!А вот функцию незнаю.


 
Sha ©   (2003-12-15 16:12) [6]

Используй счетчик тактов процессора. Здесь это уже было. Поищи.


 
Agent13   (2003-12-15 16:13) [7]

В принципе несложно узнать о том, что время было изменено (по-моему сообщение называется WM_TimeChange). Так может можно его отлавливать и обратно менять или ещё чё в этом роде :) Или так не пойдёт?


 
clift ©   (2003-12-15 16:25) [8]

>Agent13
Ситуация примерно такая
Если настроить программу то она каждую минуту(зависит от настроек)автоматически при истечении времени нажимает на кнопку
и снова запускает таймер, если минута истекла то кнопка снова нажимается. Если пользователь нажал кнопку сам то таймер также обновляется.
А проблема в том что минута времени отсчитывается от Now (после нажатия) отнимается текущие время.Понятно что если изменить текущее время таймер в программе также изменяется.
А это уже "неправильная работа программы"


 
Рамиль ©   (2003-12-15 16:29) [9]

А минуту времени по человечески отсчитывать нельзя что ли?
Timer.Interval := 60000;

Или, тогда уж, не now а GetTickCount


 
Agent13   (2003-12-15 16:43) [10]

2Рамиль

Точно. GetTickCount возвращает время, которое прошло после запуска системы, а уж его точно принудительно не изменишь и не подделаешь. :)


 
clift ©   (2003-12-15 16:46) [11]

>Рамиль ©
Использовать Интервал из-за некоторых особенностей невозможно
а вот GetTickCount стоит попробовать...


 
}{enon ©   (2003-12-15 17:24) [12]

Попробуй ловить сообщение WM_TIMECHANGE и изменять "нулевое время".



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.013 c
11-86327
Bartov
2003-04-03 01:53
2003.12.26
KOL+VCL


14-86508
noj
2003-12-04 12:40
2003.12.26
Возможно ли отключение винчестеров без RAID


6-86481
alt7
2003-10-28 17:58
2003.12.26
Про потоки в СЕРВЕРЕ


14-86562
Кен
2003-11-22 07:31
2003.12.26
Высадку американцев на Луну снимал Стэнли Кубрик


1-86355
Михааааааааааааа
2003-12-12 13:18
2003.12.26
Plug-in




   Наверх