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