Вниз
Скачать: 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.01 c
14-86508
noj
2003-12-04 12:40
2003.12.26
Возможно ли отключение винчестеров без RAID


1-86402
konstantinov
2003-12-14 01:10
2003.12.26
Проверка диапазона значений


1-86392
Шустрый
2003-12-15 22:01
2003.12.26
Программное нажате ENTER


1-86425
Sirruf
2003-12-15 12:20
2003.12.26
Изменить цвет скролла в ListBox


1-86449
NetKnight
2003-12-13 12:15
2003.12.26
Переобразование Unicode < - > Win




   Наверх